# moves

game_id: a2ab0479-3b71-420c-8ea9-d83371b1a059
timestamp: 2026-01-25 00:10:35.231185
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": "K", "suit": "spades"}, {"rank": "A", "suit": "spades"}, {"rank": "K", "suit": "hearts"}, {"rank": "A", "suit": "hearts"}, {"rank": "8", "suit": "clubs"}], "Priya": [{"rank": "3", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}, {"rank": "3", "suit": "hearts"}], "Maya": [{"rank": "4", "suit": "spades"}, {"rank": "4", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}]}


game_id: a2ab0479-3b71-420c-8ea9-d83371b1a059
timestamp: 2026-01-25 00:10:35.237670
player_id: cpu_1
player_name: Sofia
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped 3 for 6 at pos 5
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: a2ab0479-3b71-420c-8ea9-d83371b1a059
timestamp: 2026-01-25 00:10:35.244200
player_id: cpu_2
player_name: Priya
action: take_discard
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: took 6 from discard
visible_opponents_json:
{"Diego": [{"rank": "K", "suit": "spades"}, {"rank": "A", "suit": "spades"}, {"rank": "K", "suit": "hearts"}, {"rank": "A", "suit": "hearts"}, {"rank": "8", "suit": "clubs"}], "Sofia": [{"rank": "5", "suit": "spades"}, {"rank": "K", "suit": "clubs"}, {"rank": "5", "suit": "clubs"}, {"rank": "3", "suit": "clubs"}], "Maya": [{"rank": "4", "suit": "spades"}, {"rank": "4", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}]}


game_id: a2ab0479-3b71-420c-8ea9-d83371b1a059
timestamp: 2026-01-25 00:10:35.250544
player_id: cpu_2
player_name: Priya
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: swapped 6 for 8 at pos 1
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: a2ab0479-3b71-420c-8ea9-d83371b1a059
timestamp: 2026-01-25 00:10:35.256821
player_id: cpu_3
player_name: Maya
action: draw_deck
card_rank: 8
card_suit: spades
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}]

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


game_id: a2ab0479-3b71-420c-8ea9-d83371b1a059
timestamp: 2026-01-25 00:10:35.262725
player_id: cpu_3
player_name: Maya
action: swap
card_rank: 8
card_suit: spades
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: swapped 8 for 4 at pos 1
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}]

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


game_id: a2ab0479-3b71-420c-8ea9-d83371b1a059
timestamp: 2026-01-25 00:10:35.268853
player_id: cpu_0
player_name: Diego
action: take_discard
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": true}]

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


game_id: a2ab0479-3b71-420c-8ea9-d83371b1a059
timestamp: 2026-01-25 00:10:35.275400
player_id: cpu_0
player_name: Diego
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: swapped 4 for 8 at pos 5
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: a2ab0479-3b71-420c-8ea9-d83371b1a059
timestamp: 2026-01-25 00:10:35.282173
player_id: cpu_1
player_name: Sofia
action: draw_deck
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: a2ab0479-3b71-420c-8ea9-d83371b1a059
timestamp: 2026-01-25 00:10:35.288424
player_id: cpu_1
player_name: Sofia
action: swap
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped 2 for 5 at pos 1
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: a2ab0479-3b71-420c-8ea9-d83371b1a059
timestamp: 2026-01-25 00:10:35.295882
player_id: cpu_2
player_name: Priya
action: take_discard
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: a2ab0479-3b71-420c-8ea9-d83371b1a059
timestamp: 2026-01-25 00:10:35.302844
player_id: cpu_2
player_name: Priya
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped 5 for 6 at pos 1
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: a2ab0479-3b71-420c-8ea9-d83371b1a059
timestamp: 2026-01-25 00:10:35.309856
player_id: cpu_3
player_name: Maya
action: take_discard
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}]

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


game_id: a2ab0479-3b71-420c-8ea9-d83371b1a059
timestamp: 2026-01-25 00:10:35.316206
player_id: cpu_3
player_name: Maya
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: swapped 6 for 8 at pos 1
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}]

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


game_id: a2ab0479-3b71-420c-8ea9-d83371b1a059
timestamp: 2026-01-25 00:10:35.322844
player_id: cpu_0
player_name: Diego
action: draw_deck
card_rank: Q
card_suit: spades
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: a2ab0479-3b71-420c-8ea9-d83371b1a059
timestamp: 2026-01-25 00:10:35.335746
player_id: cpu_1
player_name: Sofia
action: draw_deck
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: a2ab0479-3b71-420c-8ea9-d83371b1a059
timestamp: 2026-01-25 00:10:35.341983
player_id: cpu_1
player_name: Sofia
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped 3 for 5 at pos 4
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: a2ab0479-3b71-420c-8ea9-d83371b1a059
timestamp: 2026-01-25 00:10:35.348633
player_id: cpu_2
player_name: Priya
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": "A", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: a2ab0479-3b71-420c-8ea9-d83371b1a059
timestamp: 2026-01-25 00:10:35.355283
player_id: cpu_2
player_name: Priya
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "A", "suit": "diamonds"}
decision_reason: swapped 5 for A at pos 0
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: a2ab0479-3b71-420c-8ea9-d83371b1a059
timestamp: 2026-01-25 00:10:35.361903
player_id: cpu_3
player_name: Maya
action: take_discard
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took A from discard
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}]

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


game_id: a2ab0479-3b71-420c-8ea9-d83371b1a059
timestamp: 2026-01-25 00:10:35.368304
player_id: cpu_3
player_name: Maya
action: swap
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped A for 6 at pos 1
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}]

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


game_id: a2ab0479-3b71-420c-8ea9-d83371b1a059
timestamp: 2026-01-25 00:10:35.374964
player_id: cpu_0
player_name: Diego
action: take_discard
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took 6 from discard
visible_opponents_json:
{"Sofia": [{"rank": "2", "suit": "hearts"}, {"rank": "K", "suit": "clubs"}, {"rank": "3", "suit": "spades"}, {"rank": "3", "suit": "clubs"}], "Priya": [{"rank": "5", "suit": "clubs"}, {"rank": "5", "suit": "spades"}, {"rank": "3", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}, {"rank": "3", "suit": "hearts"}], "Maya": [{"rank": "4", "suit": "spades"}, {"rank": "A", "suit": "diamonds"}, {"rank": "4", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}]}


game_id: a2ab0479-3b71-420c-8ea9-d83371b1a059
timestamp: 2026-01-25 00:10:35.382802
player_id: cpu_0
player_name: Diego
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: swapped 6 for 4 at pos 2
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: a2ab0479-3b71-420c-8ea9-d83371b1a059
timestamp: 2026-01-25 00:10:35.389424
player_id: cpu_1
player_name: Sofia
action: take_discard
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: a2ab0479-3b71-420c-8ea9-d83371b1a059
timestamp: 2026-01-25 00:10:35.395608
player_id: cpu_1
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": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: 18c5ac89-b918-4f04-931f-c6c26a4a59bf
timestamp: 2026-01-25 00:10:35.413162
player_id: cpu_0
player_name: River
action: draw_deck
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 18c5ac89-b918-4f04-931f-c6c26a4a59bf
timestamp: 2026-01-25 00:10:35.419708
player_id: cpu_0
player_name: River
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: swapped 7 for J at pos 1
hand_json:
[{"rank": "K", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 18c5ac89-b918-4f04-931f-c6c26a4a59bf
timestamp: 2026-01-25 00:10:35.426330
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}]

visible_opponents_json:
{"River": [{"rank": "7", "suit": "hearts"}, {"rank": "4", "suit": "clubs"}], "Marcus": [{"rank": "J", "suit": "spades"}, {"rank": "10", "suit": "hearts"}], "Priya": [{"rank": "7", "suit": "spades"}, {"rank": "4", "suit": "diamonds"}]}


game_id: 18c5ac89-b918-4f04-931f-c6c26a4a59bf
timestamp: 2026-01-25 00:10:35.435069
player_id: cpu_1
player_name: Sage
action: swap
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "3", "suit": "spades"}
decision_reason: swapped A for 3 at pos 1
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}]

visible_opponents_json:
{"River": [{"rank": "7", "suit": "hearts"}, {"rank": "4", "suit": "clubs"}], "Marcus": [{"rank": "J", "suit": "spades"}, {"rank": "10", "suit": "hearts"}], "Priya": [{"rank": "7", "suit": "spades"}, {"rank": "4", "suit": "diamonds"}]}


game_id: 18c5ac89-b918-4f04-931f-c6c26a4a59bf
timestamp: 2026-01-25 00:10:35.445218
player_id: cpu_2
player_name: Marcus
action: take_discard
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "J", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": true}]

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


game_id: 18c5ac89-b918-4f04-931f-c6c26a4a59bf
timestamp: 2026-01-25 00:10:35.453368
player_id: cpu_2
player_name: Marcus
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: swapped 3 for J at pos 0
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": true}]

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


game_id: 18c5ac89-b918-4f04-931f-c6c26a4a59bf
timestamp: 2026-01-25 00:10:35.464669
player_id: cpu_3
player_name: Priya
action: draw_deck
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}]

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


game_id: 18c5ac89-b918-4f04-931f-c6c26a4a59bf
timestamp: 2026-01-25 00:10:35.473989
player_id: cpu_3
player_name: Priya
action: swap
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped A for 7 at pos 1
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}]

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


game_id: 18c5ac89-b918-4f04-931f-c6c26a4a59bf
timestamp: 2026-01-25 00:10:35.480223
player_id: cpu_0
player_name: River
action: take_discard
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "K", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 18c5ac89-b918-4f04-931f-c6c26a4a59bf
timestamp: 2026-01-25 00:10:35.486284
player_id: cpu_0
player_name: River
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped 7 for 7 at pos 4
hand_json:
[{"rank": "K", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 18c5ac89-b918-4f04-931f-c6c26a4a59bf
timestamp: 2026-01-25 00:10:35.492890
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: J
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: 18c5ac89-b918-4f04-931f-c6c26a4a59bf
timestamp: 2026-01-25 00:10:35.505659
player_id: cpu_2
player_name: Marcus
action: draw_deck
card_rank: 8
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": true}]

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


game_id: 18c5ac89-b918-4f04-931f-c6c26a4a59bf
timestamp: 2026-01-25 00:10:35.513350
player_id: cpu_2
player_name: Marcus
action: swap
card_rank: 8
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: swapped 8 for 10 at pos 5
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": true}]

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


game_id: 18c5ac89-b918-4f04-931f-c6c26a4a59bf
timestamp: 2026-01-25 00:10:35.519769
player_id: cpu_3
player_name: Priya
action: draw_deck
card_rank: 9
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}]

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


game_id: 18c5ac89-b918-4f04-931f-c6c26a4a59bf
timestamp: 2026-01-25 00:10:35.533473
player_id: cpu_0
player_name: River
action: draw_deck
card_rank: Q
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 18c5ac89-b918-4f04-931f-c6c26a4a59bf
timestamp: 2026-01-25 00:10:35.546579
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"River": [{"rank": "7", "suit": "hearts"}, {"rank": "7", "suit": "spades"}, {"rank": "4", "suit": "clubs"}], "Marcus": [{"rank": "3", "suit": "spades"}, {"rank": "8", "suit": "clubs"}], "Priya": [{"rank": "A", "suit": "clubs"}, {"rank": "4", "suit": "diamonds"}]}


game_id: 18c5ac89-b918-4f04-931f-c6c26a4a59bf
timestamp: 2026-01-25 00:10:35.553089
player_id: cpu_1
player_name: Sage
action: swap
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "A", "suit": "diamonds"}
decision_reason: swapped K for A at pos 1
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: 18c5ac89-b918-4f04-931f-c6c26a4a59bf
timestamp: 2026-01-25 00:10:35.559359
player_id: cpu_2
player_name: Marcus
action: take_discard
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: took A from discard
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": true}]

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


game_id: 18c5ac89-b918-4f04-931f-c6c26a4a59bf
timestamp: 2026-01-25 00:10:35.565448
player_id: cpu_2
player_name: Marcus
action: swap
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: swapped A for 8 at pos 5
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: 18c5ac89-b918-4f04-931f-c6c26a4a59bf
timestamp: 2026-01-25 00:10:35.572050
player_id: cpu_3
player_name: Priya
action: draw_deck
card_rank: 8
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"River": [{"rank": "7", "suit": "hearts"}, {"rank": "7", "suit": "spades"}, {"rank": "4", "suit": "clubs"}], "Sage": [{"rank": "K", "suit": "diamonds"}, {"rank": "K", "suit": "clubs"}], "Marcus": [{"rank": "3", "suit": "spades"}, {"rank": "A", "suit": "diamonds"}]}


game_id: 18c5ac89-b918-4f04-931f-c6c26a4a59bf
timestamp: 2026-01-25 00:10:35.584732
player_id: cpu_0
player_name: River
action: draw_deck
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Sage": [{"rank": "K", "suit": "diamonds"}, {"rank": "K", "suit": "clubs"}], "Marcus": [{"rank": "3", "suit": "spades"}, {"rank": "A", "suit": "diamonds"}], "Priya": [{"rank": "A", "suit": "clubs"}, {"rank": "4", "suit": "diamonds"}]}


game_id: 18c5ac89-b918-4f04-931f-c6c26a4a59bf
timestamp: 2026-01-25 00:10:35.591046
player_id: cpu_0
player_name: River
action: swap
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped 2 for 7 at pos 1
hand_json:
[{"rank": "K", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 18c5ac89-b918-4f04-931f-c6c26a4a59bf
timestamp: 2026-01-25 00:10:35.597223
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: A
card_suit: spades
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: 18c5ac89-b918-4f04-931f-c6c26a4a59bf
timestamp: 2026-01-25 00:10:35.603597
player_id: cpu_1
player_name: Sage
action: swap
card_rank: A
card_suit: spades
discard_top_json: {"rank": "K", "suit": "hearts"}
decision_reason: swapped A for K at pos 2
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: 18c5ac89-b918-4f04-931f-c6c26a4a59bf
timestamp: 2026-01-25 00:10:35.610007
player_id: cpu_2
player_name: Marcus
action: take_discard
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: took K from discard
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: 18c5ac89-b918-4f04-931f-c6c26a4a59bf
timestamp: 2026-01-25 00:10:35.616134
player_id: cpu_2
player_name: Marcus
action: swap
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "3", "suit": "spades"}
decision_reason: swapped K for 3 at pos 0
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: 18c5ac89-b918-4f04-931f-c6c26a4a59bf
timestamp: 2026-01-25 00:10:35.623117
player_id: cpu_3
player_name: Priya
action: take_discard
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: took 3 from discard
visible_opponents_json:
{"River": [{"rank": "2", "suit": "spades"}, {"rank": "7", "suit": "spades"}, {"rank": "4", "suit": "clubs"}], "Sage": [{"rank": "K", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}, {"rank": "K", "suit": "clubs"}], "Marcus": [{"rank": "K", "suit": "hearts"}, {"rank": "A", "suit": "diamonds"}]}


game_id: 18c5ac89-b918-4f04-931f-c6c26a4a59bf
timestamp: 2026-01-25 00:10:35.629686
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: swapped 3 for 4 at pos 3
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}]

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


game_id: 18c5ac89-b918-4f04-931f-c6c26a4a59bf
timestamp: 2026-01-25 00:10:35.636090
player_id: cpu_0
player_name: River
action: take_discard
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "K", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 18c5ac89-b918-4f04-931f-c6c26a4a59bf
timestamp: 2026-01-25 00:10:35.642333
player_id: cpu_0
player_name: River
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped 4 for 6 at pos 2
hand_json:
[{"rank": "K", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 18c5ac89-b918-4f04-931f-c6c26a4a59bf
timestamp: 2026-01-25 00:10:35.649055
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: 18c5ac89-b918-4f04-931f-c6c26a4a59bf
timestamp: 2026-01-25 00:10:35.655539
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped 6 for 5 at pos 0
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: 18c5ac89-b918-4f04-931f-c6c26a4a59bf
timestamp: 2026-01-25 00:10:35.662058
player_id: cpu_2
player_name: Marcus
action: take_discard
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: 18c5ac89-b918-4f04-931f-c6c26a4a59bf
timestamp: 2026-01-25 00:10:35.668555
player_id: cpu_2
player_name: Marcus
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: swapped 5 for Q at pos 1
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: 18c5ac89-b918-4f04-931f-c6c26a4a59bf
timestamp: 2026-01-25 00:10:35.675648
player_id: cpu_3
player_name: Priya
action: draw_deck
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}]

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


game_id: 18c5ac89-b918-4f04-931f-c6c26a4a59bf
timestamp: 2026-01-25 00:10:35.682085
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped 5 for 5 at pos 2
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}]

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


game_id: 18c5ac89-b918-4f04-931f-c6c26a4a59bf
timestamp: 2026-01-25 00:10:35.688313
player_id: cpu_0
player_name: River
action: take_discard
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "K", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 18c5ac89-b918-4f04-931f-c6c26a4a59bf
timestamp: 2026-01-25 00:10:35.694713
player_id: cpu_0
player_name: River
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped 5 for 7 at pos 4
hand_json:
[{"rank": "K", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 18c5ac89-b918-4f04-931f-c6c26a4a59bf
timestamp: 2026-01-25 00:10:35.701682
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: 18c5ac89-b918-4f04-931f-c6c26a4a59bf
timestamp: 2026-01-25 00:10:35.708454
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "3", "suit": "hearts"}
decision_reason: swapped 7 for 3 at pos 3
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: 18c5ac89-b918-4f04-931f-c6c26a4a59bf
timestamp: 2026-01-25 00:10:35.714918
player_id: cpu_2
player_name: Marcus
action: take_discard
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: 18c5ac89-b918-4f04-931f-c6c26a4a59bf
timestamp: 2026-01-25 00:10:35.720997
player_id: cpu_2
player_name: Marcus
action: swap
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped 3 for 5 at pos 1
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: 18c5ac89-b918-4f04-931f-c6c26a4a59bf
timestamp: 2026-01-25 00:10:35.727663
player_id: cpu_3
player_name: Priya
action: take_discard
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}]

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


game_id: 18c5ac89-b918-4f04-931f-c6c26a4a59bf
timestamp: 2026-01-25 00:10:35.734400
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "3", "suit": "clubs"}
decision_reason: swapped 5 for 3 at pos 5
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}]

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


game_id: 18c5ac89-b918-4f04-931f-c6c26a4a59bf
timestamp: 2026-01-25 00:10:35.741141
player_id: cpu_0
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": "K", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 18c5ac89-b918-4f04-931f-c6c26a4a59bf
timestamp: 2026-01-25 00:10:35.747242
player_id: cpu_0
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 4
hand_json:
[{"rank": "K", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 18c5ac89-b918-4f04-931f-c6c26a4a59bf
timestamp: 2026-01-25 00:10:35.753780
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: 18c5ac89-b918-4f04-931f-c6c26a4a59bf
timestamp: 2026-01-25 00:10:35.760292
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped 5 for 7 at pos 3
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: 18c5ac89-b918-4f04-931f-c6c26a4a59bf
timestamp: 2026-01-25 00:10:35.766876
player_id: cpu_2
player_name: Marcus
action: take_discard
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: 18c5ac89-b918-4f04-931f-c6c26a4a59bf
timestamp: 2026-01-25 00:10:35.773570
player_id: cpu_2
player_name: Marcus
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: swapped 7 for 10 at pos 2
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: 18c5ac89-b918-4f04-931f-c6c26a4a59bf
timestamp: 2026-01-25 00:10:35.780066
player_id: cpu_3
player_name: Priya
action: draw_deck
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}]

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


game_id: 18c5ac89-b918-4f04-931f-c6c26a4a59bf
timestamp: 2026-01-25 00:10:35.787511
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped 4 for 5 at pos 2
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}]

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


game_id: 18c5ac89-b918-4f04-931f-c6c26a4a59bf
timestamp: 2026-01-25 00:10:35.794675
player_id: cpu_0
player_name: River
action: take_discard
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "K", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 18c5ac89-b918-4f04-931f-c6c26a4a59bf
timestamp: 2026-01-25 00:10:35.801079
player_id: cpu_0
player_name: River
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: swapped 5 for Q at pos 3
hand_json:
[{"rank": "K", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 18c5ac89-b918-4f04-931f-c6c26a4a59bf
timestamp: 2026-01-25 00:10:35.807370
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: 18c5ac89-b918-4f04-931f-c6c26a4a59bf
timestamp: 2026-01-25 00:10:35.813786
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 6 for 7 at pos 4
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: 18c5ac89-b918-4f04-931f-c6c26a4a59bf
timestamp: 2026-01-25 00:10:35.820193
player_id: cpu_2
player_name: Marcus
action: take_discard
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: 18c5ac89-b918-4f04-931f-c6c26a4a59bf
timestamp: 2026-01-25 00:10:35.827129
player_id: cpu_2
player_name: Marcus
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "2", "suit": "diamonds"}
decision_reason: swapped 7 for 2 at pos 4
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: 18c5ac89-b918-4f04-931f-c6c26a4a59bf
timestamp: 2026-01-25 00:10:35.834623
player_id: cpu_3
player_name: Priya
action: take_discard
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: took 2 from discard
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}]

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


game_id: 18c5ac89-b918-4f04-931f-c6c26a4a59bf
timestamp: 2026-01-25 00:10:35.840795
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped 2 for 5 at pos 5
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: 18c5ac89-b918-4f04-931f-c6c26a4a59bf
timestamp: 2026-01-25 00:10:35.847294
player_id: cpu_0
player_name: River
action: take_discard
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "K", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 18c5ac89-b918-4f04-931f-c6c26a4a59bf
timestamp: 2026-01-25 00:10:35.854290
player_id: cpu_0
player_name: River
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "K", "suit": "spades"}
decision_reason: swapped 5 for K at pos 0
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 8fb65881-5330-4b26-bb2e-4fa8275d1a07
timestamp: 2026-01-25 00:10:35.873445
player_id: cpu_0
player_name: Priya
action: draw_deck
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "9", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}]

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


game_id: 8fb65881-5330-4b26-bb2e-4fa8275d1a07
timestamp: 2026-01-25 00:10:35.879596
player_id: cpu_0
player_name: Priya
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: swapped 7 for 9 at pos 0
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}]

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


game_id: 8fb65881-5330-4b26-bb2e-4fa8275d1a07
timestamp: 2026-01-25 00:10:35.885925
player_id: cpu_1
player_name: Marcus
action: draw_deck
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: 8fb65881-5330-4b26-bb2e-4fa8275d1a07
timestamp: 2026-01-25 00:10:35.898943
player_id: cpu_2
player_name: Diego
action: draw_deck
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}]

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


game_id: 8fb65881-5330-4b26-bb2e-4fa8275d1a07
timestamp: 2026-01-25 00:10:35.905429
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped 3 for 6 at pos 0
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}]

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


game_id: 8fb65881-5330-4b26-bb2e-4fa8275d1a07
timestamp: 2026-01-25 00:10:35.912191
player_id: cpu_3
player_name: Sofia
action: take_discard
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}]

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


game_id: 8fb65881-5330-4b26-bb2e-4fa8275d1a07
timestamp: 2026-01-25 00:10:35.918715
player_id: cpu_3
player_name: Sofia
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: swapped 6 for Q at pos 4
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}]

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


game_id: 8fb65881-5330-4b26-bb2e-4fa8275d1a07
timestamp: 2026-01-25 00:10:35.925306
player_id: cpu_0
player_name: Priya
action: draw_deck
card_rank: J
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}]

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


game_id: 8fb65881-5330-4b26-bb2e-4fa8275d1a07
timestamp: 2026-01-25 00:10:35.941424
player_id: cpu_1
player_name: Marcus
action: draw_deck
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: 8fb65881-5330-4b26-bb2e-4fa8275d1a07
timestamp: 2026-01-25 00:10:35.948049
player_id: cpu_1
player_name: Marcus
action: swap
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped A for 5 at pos 5
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: 8fb65881-5330-4b26-bb2e-4fa8275d1a07
timestamp: 2026-01-25 00:10:35.954520
player_id: cpu_2
player_name: Diego
action: take_discard
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}]

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


game_id: 8fb65881-5330-4b26-bb2e-4fa8275d1a07
timestamp: 2026-01-25 00:10:35.961053
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped 5 for 5 at pos 5
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: 8fb65881-5330-4b26-bb2e-4fa8275d1a07
timestamp: 2026-01-25 00:10:35.967309
player_id: cpu_3
player_name: Sofia
action: take_discard
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}]

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


game_id: 8fb65881-5330-4b26-bb2e-4fa8275d1a07
timestamp: 2026-01-25 00:10:35.973705
player_id: cpu_3
player_name: Sofia
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped 5 for 7 at pos 2
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}]

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


game_id: 8fb65881-5330-4b26-bb2e-4fa8275d1a07
timestamp: 2026-01-25 00:10:35.979798
player_id: cpu_0
player_name: Priya
action: take_discard
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: took 7 from discard
visible_opponents_json:
{"Marcus": [{"rank": "K", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}], "Diego": [{"rank": "3", "suit": "clubs"}, {"rank": "2", "suit": "spades"}, {"rank": "3", "suit": "diamonds"}, {"rank": "5", "suit": "hearts"}], "Sofia": [{"rank": "5", "suit": "clubs"}, {"rank": "K", "suit": "spades"}, {"rank": "6", "suit": "spades"}]}


game_id: 8fb65881-5330-4b26-bb2e-4fa8275d1a07
timestamp: 2026-01-25 00:10:35.985928
player_id: cpu_0
player_name: Priya
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: swapped 7 for J at pos 3
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}]

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


game_id: 8fb65881-5330-4b26-bb2e-4fa8275d1a07
timestamp: 2026-01-25 00:10:35.992113
player_id: cpu_1
player_name: Marcus
action: draw_deck
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: 8fb65881-5330-4b26-bb2e-4fa8275d1a07
timestamp: 2026-01-25 00:10:35.998201
player_id: cpu_1
player_name: Marcus
action: swap
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "A", "suit": "clubs"}
decision_reason: swapped 2 for A at pos 5
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 8fb65881-5330-4b26-bb2e-4fa8275d1a07
timestamp: 2026-01-25 00:10:36.004310
player_id: cpu_2
player_name: Diego
action: draw_deck
card_rank: J
card_suit: diamonds
discard_top_json: {"rank": "A", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: 8fb65881-5330-4b26-bb2e-4fa8275d1a07
timestamp: 2026-01-25 00:10:36.017299
player_id: cpu_3
player_name: Sofia
action: draw_deck
card_rank: 8
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}]

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


game_id: 8fb65881-5330-4b26-bb2e-4fa8275d1a07
timestamp: 2026-01-25 00:10:36.030173
player_id: cpu_0
player_name: Priya
action: draw_deck
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}]

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


game_id: 8fb65881-5330-4b26-bb2e-4fa8275d1a07
timestamp: 2026-01-25 00:10:36.036593
player_id: cpu_0
player_name: Priya
action: swap
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 3 for 7 at pos 0
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}]

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


game_id: 8fb65881-5330-4b26-bb2e-4fa8275d1a07
timestamp: 2026-01-25 00:10:36.042703
player_id: cpu_1
player_name: Marcus
action: take_discard
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 8fb65881-5330-4b26-bb2e-4fa8275d1a07
timestamp: 2026-01-25 00:10:36.049091
player_id: cpu_1
player_name: Marcus
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped 7 for 7 at pos 3
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 8fb65881-5330-4b26-bb2e-4fa8275d1a07
timestamp: 2026-01-25 00:10:36.055293
player_id: cpu_2
player_name: Diego
action: draw_deck
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Priya": [{"rank": "3", "suit": "hearts"}, {"rank": "7", "suit": "spades"}, {"rank": "2", "suit": "hearts"}], "Marcus": [{"rank": "K", "suit": "hearts"}, {"rank": "7", "suit": "diamonds"}, {"rank": "2", "suit": "clubs"}], "Sofia": [{"rank": "5", "suit": "clubs"}, {"rank": "K", "suit": "spades"}, {"rank": "6", "suit": "spades"}]}


game_id: 8fb65881-5330-4b26-bb2e-4fa8275d1a07
timestamp: 2026-01-25 00:10:36.061443
player_id: cpu_2
player_name: Diego
action: swap
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped K for 5 at pos 5
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: 8fb65881-5330-4b26-bb2e-4fa8275d1a07
timestamp: 2026-01-25 00:10:36.067331
player_id: cpu_3
player_name: Sofia
action: take_discard
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: took 5 from discard
visible_opponents_json:
{"Priya": [{"rank": "3", "suit": "hearts"}, {"rank": "7", "suit": "spades"}, {"rank": "2", "suit": "hearts"}], "Marcus": [{"rank": "K", "suit": "hearts"}, {"rank": "7", "suit": "diamonds"}, {"rank": "2", "suit": "clubs"}], "Diego": [{"rank": "3", "suit": "clubs"}, {"rank": "2", "suit": "spades"}, {"rank": "3", "suit": "diamonds"}, {"rank": "K", "suit": "diamonds"}]}


game_id: 8fb65881-5330-4b26-bb2e-4fa8275d1a07
timestamp: 2026-01-25 00:10:36.073083
player_id: cpu_3
player_name: Sofia
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: swapped 5 for 10 at pos 5
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: 8fb65881-5330-4b26-bb2e-4fa8275d1a07
timestamp: 2026-01-25 00:10:36.079121
player_id: cpu_0
player_name: Priya
action: draw_deck
card_rank: 10
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}]

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


game_id: 8fb65881-5330-4b26-bb2e-4fa8275d1a07
timestamp: 2026-01-25 00:10:36.091641
player_id: cpu_1
player_name: Marcus
action: draw_deck
card_rank: 9
card_suit: spades
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 8fb65881-5330-4b26-bb2e-4fa8275d1a07
timestamp: 2026-01-25 00:10:36.104314
player_id: cpu_2
player_name: Diego
action: draw_deck
card_rank: 8
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: 8fb65881-5330-4b26-bb2e-4fa8275d1a07
timestamp: 2026-01-25 00:10:36.110362
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 8
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: swapped 8 for 4 at pos 4
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: 8fb65881-5330-4b26-bb2e-4fa8275d1a07
timestamp: 2026-01-25 00:10:36.116514
player_id: cpu_3
player_name: Sofia
action: take_discard
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: 8fb65881-5330-4b26-bb2e-4fa8275d1a07
timestamp: 2026-01-25 00:10:36.123091
player_id: cpu_3
player_name: Sofia
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped 4 for 6 at pos 4
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: 8fb65881-5330-4b26-bb2e-4fa8275d1a07
timestamp: 2026-01-25 00:10:36.129441
player_id: cpu_0
player_name: Priya
action: take_discard
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: took 6 from discard
visible_opponents_json:
{"Marcus": [{"rank": "K", "suit": "hearts"}, {"rank": "7", "suit": "diamonds"}, {"rank": "2", "suit": "clubs"}], "Diego": [{"rank": "3", "suit": "clubs"}, {"rank": "2", "suit": "spades"}, {"rank": "3", "suit": "diamonds"}, {"rank": "8", "suit": "clubs"}, {"rank": "K", "suit": "diamonds"}], "Sofia": [{"rank": "5", "suit": "clubs"}, {"rank": "K", "suit": "spades"}, {"rank": "4", "suit": "clubs"}, {"rank": "5", "suit": "hearts"}]}


game_id: 8fb65881-5330-4b26-bb2e-4fa8275d1a07
timestamp: 2026-01-25 00:10:36.135595
player_id: cpu_0
player_name: Priya
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped 6 for 7 at pos 3
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}]

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


game_id: 8fb65881-5330-4b26-bb2e-4fa8275d1a07
timestamp: 2026-01-25 00:10:36.141966
player_id: cpu_1
player_name: Marcus
action: take_discard
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: took 7 from discard
visible_opponents_json:
{"Priya": [{"rank": "3", "suit": "hearts"}, {"rank": "6", "suit": "spades"}, {"rank": "2", "suit": "hearts"}], "Diego": [{"rank": "3", "suit": "clubs"}, {"rank": "2", "suit": "spades"}, {"rank": "3", "suit": "diamonds"}, {"rank": "8", "suit": "clubs"}, {"rank": "K", "suit": "diamonds"}], "Sofia": [{"rank": "5", "suit": "clubs"}, {"rank": "K", "suit": "spades"}, {"rank": "4", "suit": "clubs"}, {"rank": "5", "suit": "hearts"}]}


game_id: 8fb65881-5330-4b26-bb2e-4fa8275d1a07
timestamp: 2026-01-25 00:10:36.148154
player_id: cpu_1
player_name: Marcus
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "A", "suit": "diamonds"}
decision_reason: swapped 7 for A at pos 1
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 8fb65881-5330-4b26-bb2e-4fa8275d1a07
timestamp: 2026-01-25 00:10:36.154535
player_id: cpu_2
player_name: Diego
action: take_discard
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: took A from discard
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: 8fb65881-5330-4b26-bb2e-4fa8275d1a07
timestamp: 2026-01-25 00:10:36.161015
player_id: cpu_2
player_name: Diego
action: swap
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: swapped A for 8 at pos 4
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: 8fb65881-5330-4b26-bb2e-4fa8275d1a07
timestamp: 2026-01-25 00:10:36.167271
player_id: cpu_3
player_name: Sofia
action: draw_deck
card_rank: Q
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: 8fb65881-5330-4b26-bb2e-4fa8275d1a07
timestamp: 2026-01-25 00:10:36.180076
player_id: cpu_0
player_name: Priya
action: draw_deck
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}]

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


game_id: 8fb65881-5330-4b26-bb2e-4fa8275d1a07
timestamp: 2026-01-25 00:10:36.186932
player_id: cpu_0
player_name: Priya
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "spades"}
decision_reason: swapped 6 for 4 at pos 1
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}]

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


game_id: 8fb65881-5330-4b26-bb2e-4fa8275d1a07
timestamp: 2026-01-25 00:10:36.193462
player_id: cpu_1
player_name: Marcus
action: take_discard
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 8fb65881-5330-4b26-bb2e-4fa8275d1a07
timestamp: 2026-01-25 00:10:36.199571
player_id: cpu_1
player_name: Marcus
action: swap
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped 4 for 7 at pos 1
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 8fb65881-5330-4b26-bb2e-4fa8275d1a07
timestamp: 2026-01-25 00:10:36.205874
player_id: cpu_2
player_name: Diego
action: take_discard
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: 8fb65881-5330-4b26-bb2e-4fa8275d1a07
timestamp: 2026-01-25 00:10:36.212760
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: swapped 7 for 8 at pos 2
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: 8fb65881-5330-4b26-bb2e-4fa8275d1a07
timestamp: 2026-01-25 00:10:36.219316
player_id: cpu_3
player_name: Sofia
action: draw_deck
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Priya": [{"rank": "3", "suit": "hearts"}, {"rank": "6", "suit": "clubs"}, {"rank": "6", "suit": "spades"}, {"rank": "2", "suit": "hearts"}], "Marcus": [{"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "spades"}, {"rank": "7", "suit": "diamonds"}, {"rank": "2", "suit": "clubs"}], "Diego": [{"rank": "3", "suit": "clubs"}, {"rank": "2", "suit": "spades"}, {"rank": "7", "suit": "spades"}, {"rank": "3", "suit": "diamonds"}, {"rank": "A", "suit": "diamonds"}, {"rank": "K", "suit": "diamonds"}]}


game_id: 8fb65881-5330-4b26-bb2e-4fa8275d1a07
timestamp: 2026-01-25 00:10:36.225733
player_id: cpu_3
player_name: Sofia
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": "4", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: 8fb65881-5330-4b26-bb2e-4fa8275d1a07
timestamp: 2026-01-25 00:10:36.232211
player_id: cpu_0
player_name: Priya
action: draw_deck
card_rank: 8
card_suit: spades
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}]

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


game_id: 8fb65881-5330-4b26-bb2e-4fa8275d1a07
timestamp: 2026-01-25 00:10:36.238362
player_id: cpu_0
player_name: Priya
action: swap
card_rank: 8
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: swapped 8 for Q at pos 2
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}]

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


game_id: 8fb65881-5330-4b26-bb2e-4fa8275d1a07
timestamp: 2026-01-25 00:10:36.244552
player_id: cpu_1
player_name: Marcus
action: draw_deck
card_rank: Q
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 8fb65881-5330-4b26-bb2e-4fa8275d1a07
timestamp: 2026-01-25 00:10:36.250772
player_id: cpu_1
player_name: Marcus
action: discard
card_rank: Q
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: discarded Q
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 7393eabf-0c88-41f7-add8-7e4ae80a4b3e
timestamp: 2026-01-25 00:10:36.272522
player_id: cpu_0
player_name: Sage
action: draw_deck
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "K", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: 7393eabf-0c88-41f7-add8-7e4ae80a4b3e
timestamp: 2026-01-25 00:10:36.278720
player_id: cpu_0
player_name: Sage
action: swap
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: swapped 2 for 10 at pos 4
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: 7393eabf-0c88-41f7-add8-7e4ae80a4b3e
timestamp: 2026-01-25 00:10:36.285175
player_id: cpu_1
player_name: Kenji
action: take_discard
card_rank: 10
card_suit: clubs
discard_top_json: {"rank": "K", "suit": "diamonds"}
decision_reason: took 10 from discard
hand_json:
[{"rank": "10", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}]

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


game_id: 7393eabf-0c88-41f7-add8-7e4ae80a4b3e
timestamp: 2026-01-25 00:10:36.291310
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 10
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: swapped 10 for 8 at pos 3
hand_json:
[{"rank": "10", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}]

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


game_id: 7393eabf-0c88-41f7-add8-7e4ae80a4b3e
timestamp: 2026-01-25 00:10:36.297413
player_id: cpu_2
player_name: River
action: draw_deck
card_rank: J
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: 7393eabf-0c88-41f7-add8-7e4ae80a4b3e
timestamp: 2026-01-25 00:10:36.308936
player_id: cpu_3
player_name: Sofia
action: draw_deck
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 7393eabf-0c88-41f7-add8-7e4ae80a4b3e
timestamp: 2026-01-25 00:10:36.321110
player_id: cpu_0
player_name: Sage
action: draw_deck
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: 7393eabf-0c88-41f7-add8-7e4ae80a4b3e
timestamp: 2026-01-25 00:10:36.339729
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: swapped 7 for 10 at pos 0
hand_json:
[{"rank": "7", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}]


game_id: 7393eabf-0c88-41f7-add8-7e4ae80a4b3e
timestamp: 2026-01-25 00:10:36.346120
player_id: cpu_2
player_name: River
action: draw_deck
card_rank: J
card_suit: spades
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: 7393eabf-0c88-41f7-add8-7e4ae80a4b3e
timestamp: 2026-01-25 00:10:36.360295
player_id: cpu_3
player_name: Sofia
action: draw_deck
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 7393eabf-0c88-41f7-add8-7e4ae80a4b3e
timestamp: 2026-01-25 00:10:36.366806
player_id: cpu_3
player_name: Sofia
action: swap
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "spades"}
decision_reason: swapped 2 for 4 at pos 5
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 7393eabf-0c88-41f7-add8-7e4ae80a4b3e
timestamp: 2026-01-25 00:10:36.375889
player_id: cpu_0
player_name: Sage
action: take_discard
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: took 4 from discard
visible_opponents_json:
{"Kenji": [{"rank": "7", "suit": "spades"}, {"rank": "10", "suit": "clubs"}, {"rank": "4", "suit": "hearts"}], "River": [{"rank": "5", "suit": "hearts"}, {"rank": "3", "suit": "hearts"}], "Sofia": [{"rank": "2", "suit": "spades"}, {"rank": "2", "suit": "clubs"}]}


game_id: 7393eabf-0c88-41f7-add8-7e4ae80a4b3e
timestamp: 2026-01-25 00:10:36.382391
player_id: cpu_0
player_name: Sage
action: swap
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: swapped 4 for J at pos 0
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: 7393eabf-0c88-41f7-add8-7e4ae80a4b3e
timestamp: 2026-01-25 00:10:36.388673
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}]

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


game_id: 7393eabf-0c88-41f7-add8-7e4ae80a4b3e
timestamp: 2026-01-25 00:10:36.395123
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: swapped 6 for 10 at pos 3
hand_json:
[{"rank": "7", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}]

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


game_id: 7393eabf-0c88-41f7-add8-7e4ae80a4b3e
timestamp: 2026-01-25 00:10:36.401323
player_id: cpu_2
player_name: River
action: draw_deck
card_rank: 9
card_suit: spades
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Sage": [{"rank": "4", "suit": "spades"}, {"rank": "2", "suit": "hearts"}, {"rank": "2", "suit": "diamonds"}], "Kenji": [{"rank": "7", "suit": "spades"}, {"rank": "6", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}], "Sofia": [{"rank": "2", "suit": "spades"}, {"rank": "2", "suit": "clubs"}]}


game_id: 7393eabf-0c88-41f7-add8-7e4ae80a4b3e
timestamp: 2026-01-25 00:10:36.413530
player_id: cpu_3
player_name: Sofia
action: draw_deck
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 7393eabf-0c88-41f7-add8-7e4ae80a4b3e
timestamp: 2026-01-25 00:10:36.425876
player_id: cpu_0
player_name: Sage
action: take_discard
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: 7393eabf-0c88-41f7-add8-7e4ae80a4b3e
timestamp: 2026-01-25 00:10:36.432310
player_id: cpu_0
player_name: Sage
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 5 for 6 at pos 5
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: 7393eabf-0c88-41f7-add8-7e4ae80a4b3e
timestamp: 2026-01-25 00:10:36.442339
player_id: cpu_1
player_name: Kenji
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "7", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}]

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


game_id: 7393eabf-0c88-41f7-add8-7e4ae80a4b3e
timestamp: 2026-01-25 00:10:36.448913
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped 6 for 7 at pos 0
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}]

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


game_id: 7393eabf-0c88-41f7-add8-7e4ae80a4b3e
timestamp: 2026-01-25 00:10:36.455079
player_id: cpu_2
player_name: River
action: take_discard
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: took 7 from discard
visible_opponents_json:
{"Sage": [{"rank": "4", "suit": "spades"}, {"rank": "2", "suit": "hearts"}, {"rank": "2", "suit": "diamonds"}, {"rank": "5", "suit": "spades"}], "Kenji": [{"rank": "6", "suit": "clubs"}, {"rank": "6", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}], "Sofia": [{"rank": "2", "suit": "spades"}, {"rank": "2", "suit": "clubs"}]}


game_id: 7393eabf-0c88-41f7-add8-7e4ae80a4b3e
timestamp: 2026-01-25 00:10:36.461232
player_id: cpu_2
player_name: River
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: swapped 7 for 4 at pos 4
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: 7393eabf-0c88-41f7-add8-7e4ae80a4b3e
timestamp: 2026-01-25 00:10:36.467163
player_id: cpu_3
player_name: Sofia
action: take_discard
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: took 4 from discard
visible_opponents_json:
{"Sage": [{"rank": "4", "suit": "spades"}, {"rank": "2", "suit": "hearts"}, {"rank": "2", "suit": "diamonds"}, {"rank": "5", "suit": "spades"}], "Kenji": [{"rank": "6", "suit": "clubs"}, {"rank": "6", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}], "River": [{"rank": "5", "suit": "hearts"}, {"rank": "7", "suit": "spades"}, {"rank": "3", "suit": "hearts"}]}


game_id: 7393eabf-0c88-41f7-add8-7e4ae80a4b3e
timestamp: 2026-01-25 00:10:36.473295
player_id: cpu_3
player_name: Sofia
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": "2", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 7393eabf-0c88-41f7-add8-7e4ae80a4b3e
timestamp: 2026-01-25 00:10:36.479416
player_id: cpu_0
player_name: Sage
action: draw_deck
card_rank: 8
card_suit: spades
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: 7393eabf-0c88-41f7-add8-7e4ae80a4b3e
timestamp: 2026-01-25 00:10:36.491915
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: 9
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}]

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


game_id: 7393eabf-0c88-41f7-add8-7e4ae80a4b3e
timestamp: 2026-01-25 00:10:36.498540
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 9
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 9 for 7 at pos 1
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}]

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


game_id: 7393eabf-0c88-41f7-add8-7e4ae80a4b3e
timestamp: 2026-01-25 00:10:36.504862
player_id: cpu_2
player_name: River
action: take_discard
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: 7393eabf-0c88-41f7-add8-7e4ae80a4b3e
timestamp: 2026-01-25 00:10:36.510894
player_id: cpu_2
player_name: River
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: swapped 7 for 4 at pos 1
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: 7393eabf-0c88-41f7-add8-7e4ae80a4b3e
timestamp: 2026-01-25 00:10:36.517126
player_id: cpu_3
player_name: Sofia
action: take_discard
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 7393eabf-0c88-41f7-add8-7e4ae80a4b3e
timestamp: 2026-01-25 00:10:36.523461
player_id: cpu_3
player_name: Sofia
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: swapped 4 for 9 at pos 1
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 7393eabf-0c88-41f7-add8-7e4ae80a4b3e
timestamp: 2026-01-25 00:10:36.529956
player_id: cpu_0
player_name: Sage
action: draw_deck
card_rank: 10
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Kenji": [{"rank": "6", "suit": "clubs"}, {"rank": "9", "suit": "diamonds"}, {"rank": "6", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}], "River": [{"rank": "5", "suit": "hearts"}, {"rank": "7", "suit": "diamonds"}, {"rank": "7", "suit": "spades"}, {"rank": "3", "suit": "hearts"}], "Sofia": [{"rank": "2", "suit": "spades"}, {"rank": "4", "suit": "clubs"}, {"rank": "4", "suit": "diamonds"}, {"rank": "2", "suit": "clubs"}]}


game_id: 7393eabf-0c88-41f7-add8-7e4ae80a4b3e
timestamp: 2026-01-25 00:10:36.542916
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}]

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


game_id: 7393eabf-0c88-41f7-add8-7e4ae80a4b3e
timestamp: 2026-01-25 00:10:36.549173
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: swapped 3 for J at pos 5
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: 7393eabf-0c88-41f7-add8-7e4ae80a4b3e
timestamp: 2026-01-25 00:10:36.555398
player_id: cpu_2
player_name: River
action: draw_deck
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: 7393eabf-0c88-41f7-add8-7e4ae80a4b3e
timestamp: 2026-01-25 00:10:36.561800
player_id: cpu_2
player_name: River
action: swap
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped K for 7 at pos 1
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: 7393eabf-0c88-41f7-add8-7e4ae80a4b3e
timestamp: 2026-01-25 00:10:36.567696
player_id: cpu_3
player_name: Sofia
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": "2", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 7393eabf-0c88-41f7-add8-7e4ae80a4b3e
timestamp: 2026-01-25 00:10:36.573773
player_id: cpu_3
player_name: Sofia
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped 7 for 6 at pos 3
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 7393eabf-0c88-41f7-add8-7e4ae80a4b3e
timestamp: 2026-01-25 00:10:36.580286
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
visible_opponents_json:
{"Kenji": [{"rank": "6", "suit": "clubs"}, {"rank": "9", "suit": "diamonds"}, {"rank": "6", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}], "River": [{"rank": "5", "suit": "hearts"}, {"rank": "K", "suit": "hearts"}, {"rank": "7", "suit": "spades"}, {"rank": "3", "suit": "hearts"}], "Sofia": [{"rank": "2", "suit": "spades"}, {"rank": "4", "suit": "clubs"}, {"rank": "7", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}, {"rank": "2", "suit": "clubs"}]}


game_id: 7393eabf-0c88-41f7-add8-7e4ae80a4b3e
timestamp: 2026-01-25 00:10:36.587028
player_id: cpu_0
player_name: Sage
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: swapped 6 for Q at pos 1
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: 7393eabf-0c88-41f7-add8-7e4ae80a4b3e
timestamp: 2026-01-25 00:10:36.593174
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: 7393eabf-0c88-41f7-add8-7e4ae80a4b3e
timestamp: 2026-01-25 00:10:36.598967
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: swapped 6 for 9 at pos 1
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: 7393eabf-0c88-41f7-add8-7e4ae80a4b3e
timestamp: 2026-01-25 00:10:36.604882
player_id: cpu_2
player_name: River
action: draw_deck
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: 7393eabf-0c88-41f7-add8-7e4ae80a4b3e
timestamp: 2026-01-25 00:10:36.612097
player_id: cpu_2
player_name: River
action: swap
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped A for 7 at pos 4
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: 7393eabf-0c88-41f7-add8-7e4ae80a4b3e
timestamp: 2026-01-25 00:10:36.618510
player_id: cpu_3
player_name: Sofia
action: take_discard
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 7393eabf-0c88-41f7-add8-7e4ae80a4b3e
timestamp: 2026-01-25 00:10:36.624700
player_id: cpu_3
player_name: Sofia
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "3", "suit": "spades"}
decision_reason: swapped 7 for 3 at pos 2
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 7393eabf-0c88-41f7-add8-7e4ae80a4b3e
timestamp: 2026-01-25 00:10:36.630869
player_id: cpu_0
player_name: Sage
action: draw_deck
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "3", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: 7393eabf-0c88-41f7-add8-7e4ae80a4b3e
timestamp: 2026-01-25 00:10:36.637167
player_id: cpu_0
player_name: Sage
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped 5 for 6 at pos 1
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: 7393eabf-0c88-41f7-add8-7e4ae80a4b3e
timestamp: 2026-01-25 00:10:36.643194
player_id: cpu_1
player_name: Kenji
action: take_discard
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "3", "suit": "spades"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: 7393eabf-0c88-41f7-add8-7e4ae80a4b3e
timestamp: 2026-01-25 00:10:36.649005
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "A", "suit": "hearts"}
decision_reason: swapped 6 for A at pos 2
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: 7393eabf-0c88-41f7-add8-7e4ae80a4b3e
timestamp: 2026-01-25 00:10:36.655105
player_id: cpu_2
player_name: River
action: take_discard
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "3", "suit": "spades"}
decision_reason: took A from discard
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: 7393eabf-0c88-41f7-add8-7e4ae80a4b3e
timestamp: 2026-01-25 00:10:36.661401
player_id: cpu_2
player_name: River
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped A for 5 at pos 0
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: 3791fb8c-4643-44e4-8cbe-5964c5da015a
timestamp: 2026-01-25 00:10:36.680476
player_id: cpu_0
player_name: Maya
action: draw_deck
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}]

visible_opponents_json:
{"River": [{"rank": "9", "suit": "hearts"}, {"rank": "8", "suit": "hearts"}], "Kenji": [{"rank": "J", "suit": "clubs"}, {"rank": "8", "suit": "diamonds"}], "Sofia": [{"rank": "K", "suit": "hearts"}, {"rank": "7", "suit": "clubs"}]}


game_id: 3791fb8c-4643-44e4-8cbe-5964c5da015a
timestamp: 2026-01-25 00:10:36.686678
player_id: cpu_0
player_name: Maya
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "2", "suit": "clubs"}
decision_reason: swapped 3 for 2 at pos 1
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}]

visible_opponents_json:
{"River": [{"rank": "9", "suit": "hearts"}, {"rank": "8", "suit": "hearts"}], "Kenji": [{"rank": "J", "suit": "clubs"}, {"rank": "8", "suit": "diamonds"}], "Sofia": [{"rank": "K", "suit": "hearts"}, {"rank": "7", "suit": "clubs"}]}


game_id: 3791fb8c-4643-44e4-8cbe-5964c5da015a
timestamp: 2026-01-25 00:10:36.693288
player_id: cpu_1
player_name: River
action: take_discard
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: took 2 from discard
hand_json:
[{"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}]

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


game_id: 3791fb8c-4643-44e4-8cbe-5964c5da015a
timestamp: 2026-01-25 00:10:36.699698
player_id: cpu_1
player_name: River
action: swap
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: swapped 2 for 9 at pos 2
hand_json:
[{"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}]

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


game_id: 3791fb8c-4643-44e4-8cbe-5964c5da015a
timestamp: 2026-01-25 00:10:36.705836
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}]

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


game_id: 3791fb8c-4643-44e4-8cbe-5964c5da015a
timestamp: 2026-01-25 00:10:36.712204
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: swapped A for J at pos 1
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}]

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


game_id: 3791fb8c-4643-44e4-8cbe-5964c5da015a
timestamp: 2026-01-25 00:10:36.718453
player_id: cpu_3
player_name: Sofia
action: draw_deck
card_rank: J
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}]

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


game_id: 3791fb8c-4643-44e4-8cbe-5964c5da015a
timestamp: 2026-01-25 00:10:36.730925
player_id: cpu_0
player_name: Maya
action: draw_deck
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}]

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


game_id: 3791fb8c-4643-44e4-8cbe-5964c5da015a
timestamp: 2026-01-25 00:10:36.737127
player_id: cpu_0
player_name: Maya
action: swap
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "3", "suit": "clubs"}
decision_reason: swapped 2 for 3 at pos 1
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}]

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


game_id: 3791fb8c-4643-44e4-8cbe-5964c5da015a
timestamp: 2026-01-25 00:10:36.743327
player_id: cpu_1
player_name: River
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": "8", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}]

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


game_id: 3791fb8c-4643-44e4-8cbe-5964c5da015a
timestamp: 2026-01-25 00:10:36.749500
player_id: cpu_1
player_name: River
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: swapped 3 for 8 at pos 4
hand_json:
[{"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}]

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


game_id: 3791fb8c-4643-44e4-8cbe-5964c5da015a
timestamp: 2026-01-25 00:10:36.755451
player_id: cpu_2
player_name: Kenji
action: take_discard
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: took 8 from discard
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}]

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


game_id: 3791fb8c-4643-44e4-8cbe-5964c5da015a
timestamp: 2026-01-25 00:10:36.761848
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "A", "suit": "hearts"}
decision_reason: swapped 8 for A at pos 2
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}]

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


game_id: 3791fb8c-4643-44e4-8cbe-5964c5da015a
timestamp: 2026-01-25 00:10:36.774156
player_id: cpu_3
player_name: Sofia
action: take_discard
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: took A from discard
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}]

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


game_id: 3791fb8c-4643-44e4-8cbe-5964c5da015a
timestamp: 2026-01-25 00:10:36.779977
player_id: cpu_3
player_name: Sofia
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": "K", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 3791fb8c-4643-44e4-8cbe-5964c5da015a
timestamp: 2026-01-25 00:10:36.786019
player_id: cpu_0
player_name: Maya
action: draw_deck
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}]

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


game_id: 3791fb8c-4643-44e4-8cbe-5964c5da015a
timestamp: 2026-01-25 00:10:36.792246
player_id: cpu_0
player_name: Maya
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped 4 for 5 at pos 3
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}]

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


game_id: 3791fb8c-4643-44e4-8cbe-5964c5da015a
timestamp: 2026-01-25 00:10:36.798701
player_id: cpu_1
player_name: River
action: take_discard
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}]

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


game_id: 3791fb8c-4643-44e4-8cbe-5964c5da015a
timestamp: 2026-01-25 00:10:36.805072
player_id: cpu_1
player_name: River
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: swapped 5 for J at pos 5
hand_json:
[{"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: 3791fb8c-4643-44e4-8cbe-5964c5da015a
timestamp: 2026-01-25 00:10:36.811283
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}]

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


game_id: 3791fb8c-4643-44e4-8cbe-5964c5da015a
timestamp: 2026-01-25 00:10:36.817702
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: swapped 4 for 8 at pos 2
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}]

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


game_id: 3791fb8c-4643-44e4-8cbe-5964c5da015a
timestamp: 2026-01-25 00:10:36.823717
player_id: cpu_3
player_name: Sofia
action: draw_deck
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 3791fb8c-4643-44e4-8cbe-5964c5da015a
timestamp: 2026-01-25 00:10:36.829865
player_id: cpu_3
player_name: Sofia
action: swap
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "3", "suit": "hearts"}
decision_reason: swapped K for 3 at pos 4
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 3791fb8c-4643-44e4-8cbe-5964c5da015a
timestamp: 2026-01-25 00:10:36.835920
player_id: cpu_0
player_name: Maya
action: draw_deck
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "3", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}]

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


game_id: 3791fb8c-4643-44e4-8cbe-5964c5da015a
timestamp: 2026-01-25 00:10:36.842285
player_id: cpu_0
player_name: Maya
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: swapped 5 for 9 at pos 2
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}]

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


game_id: 3791fb8c-4643-44e4-8cbe-5964c5da015a
timestamp: 2026-01-25 00:10:36.848379
player_id: cpu_1
player_name: River
action: draw_deck
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: 3791fb8c-4643-44e4-8cbe-5964c5da015a
timestamp: 2026-01-25 00:10:36.858086
player_id: cpu_1
player_name: River
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: swapped 5 for 10 at pos 1
hand_json:
[{"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: 3791fb8c-4643-44e4-8cbe-5964c5da015a
timestamp: 2026-01-25 00:10:36.864323
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: 8
card_suit: spades
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}]

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


game_id: 3791fb8c-4643-44e4-8cbe-5964c5da015a
timestamp: 2026-01-25 00:10:36.870480
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 8
card_suit: spades
discard_top_json: {"rank": "A", "suit": "spades"}
decision_reason: swapped 8 for A at pos 3
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}]

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


game_id: 3791fb8c-4643-44e4-8cbe-5964c5da015a
timestamp: 2026-01-25 00:10:36.877479
player_id: cpu_3
player_name: Sofia
action: take_discard
card_rank: A
card_suit: spades
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: took A from discard
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 3791fb8c-4643-44e4-8cbe-5964c5da015a
timestamp: 2026-01-25 00:10:36.883424
player_id: cpu_3
player_name: Sofia
action: swap
card_rank: A
card_suit: spades
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: swapped A for 10 at pos 2
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 3791fb8c-4643-44e4-8cbe-5964c5da015a
timestamp: 2026-01-25 00:10:36.889629
player_id: cpu_0
player_name: Maya
action: draw_deck
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}]

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


game_id: 3791fb8c-4643-44e4-8cbe-5964c5da015a
timestamp: 2026-01-25 00:10:36.896157
player_id: cpu_0
player_name: Maya
action: swap
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped 2 for 5 at pos 2
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}]

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


game_id: 3791fb8c-4643-44e4-8cbe-5964c5da015a
timestamp: 2026-01-25 00:10:36.902504
player_id: cpu_1
player_name: River
action: take_discard
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: 3791fb8c-4643-44e4-8cbe-5964c5da015a
timestamp: 2026-01-25 00:10:36.912700
player_id: cpu_1
player_name: River
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: swapped 5 for 8 at pos 0
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: 3791fb8c-4643-44e4-8cbe-5964c5da015a
timestamp: 2026-01-25 00:10:36.920465
player_id: cpu_2
player_name: Kenji
action: take_discard
card_rank: 8
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: took 8 from discard
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}]

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


game_id: 3791fb8c-4643-44e4-8cbe-5964c5da015a
timestamp: 2026-01-25 00:10:36.926703
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 8
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped 8 for 6 at pos 0
hand_json:
[{"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}]

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


game_id: 3791fb8c-4643-44e4-8cbe-5964c5da015a
timestamp: 2026-01-25 00:10:36.933485
player_id: cpu_3
player_name: Sofia
action: take_discard
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 3791fb8c-4643-44e4-8cbe-5964c5da015a
timestamp: 2026-01-25 00:10:36.939769
player_id: cpu_3
player_name: Sofia
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "K", "suit": "diamonds"}
decision_reason: swapped 6 for K at pos 1
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 3791fb8c-4643-44e4-8cbe-5964c5da015a
timestamp: 2026-01-25 00:10:36.945819
player_id: cpu_0
player_name: Maya
action: take_discard
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: took K from discard
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}]

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


game_id: 3791fb8c-4643-44e4-8cbe-5964c5da015a
timestamp: 2026-01-25 00:10:36.951807
player_id: cpu_0
player_name: Maya
action: swap
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: swapped K for 4 at pos 3
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}]

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


game_id: 3791fb8c-4643-44e4-8cbe-5964c5da015a
timestamp: 2026-01-25 00:10:36.957820
player_id: cpu_1
player_name: River
action: take_discard
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: 3791fb8c-4643-44e4-8cbe-5964c5da015a
timestamp: 2026-01-25 00:10:36.975033
player_id: cpu_1
player_name: River
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": "5", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: 3791fb8c-4643-44e4-8cbe-5964c5da015a
timestamp: 2026-01-25 00:10:36.988249
player_id: cpu_2
player_name: Kenji
action: take_discard
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}]

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


game_id: 3791fb8c-4643-44e4-8cbe-5964c5da015a
timestamp: 2026-01-25 00:10:36.994875
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: swapped 5 for 9 at pos 4
hand_json:
[{"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": true}]

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


game_id: 3791fb8c-4643-44e4-8cbe-5964c5da015a
timestamp: 2026-01-25 00:10:37.001293
player_id: cpu_3
player_name: Sofia
action: draw_deck
card_rank: Q
card_suit: spades
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 3791fb8c-4643-44e4-8cbe-5964c5da015a
timestamp: 2026-01-25 00:10:37.014653
player_id: cpu_0
player_name: Maya
action: draw_deck
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}]

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


game_id: 3791fb8c-4643-44e4-8cbe-5964c5da015a
timestamp: 2026-01-25 00:10:37.020856
player_id: cpu_0
player_name: Maya
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped 3 for 7 at pos 5
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: 3791fb8c-4643-44e4-8cbe-5964c5da015a
timestamp: 2026-01-25 00:10:37.026903
player_id: cpu_1
player_name: River
action: take_discard
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: 3791fb8c-4643-44e4-8cbe-5964c5da015a
timestamp: 2026-01-25 00:10:37.032999
player_id: cpu_1
player_name: River
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: swapped 7 for 9 at pos 3
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: e89f79d3-e269-4549-89fa-58b9307159b0
timestamp: 2026-01-25 00:10:37.051251
player_id: cpu_0
player_name: River
action: draw_deck
card_rank: 10
card_suit: spades
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": false}]

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


game_id: e89f79d3-e269-4549-89fa-58b9307159b0
timestamp: 2026-01-25 00:10:37.063990
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": false}]

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


game_id: e89f79d3-e269-4549-89fa-58b9307159b0
timestamp: 2026-01-25 00:10:37.070568
player_id: cpu_1
player_name: Sage
action: swap
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: swapped K for J at pos 1
hand_json:
[{"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": false}]

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


game_id: e89f79d3-e269-4549-89fa-58b9307159b0
timestamp: 2026-01-25 00:10:37.077718
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: A
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": "K", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": true}]

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


game_id: e89f79d3-e269-4549-89fa-58b9307159b0
timestamp: 2026-01-25 00:10:37.084452
player_id: cpu_2
player_name: Maya
action: swap
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: swapped A for Q at pos 5
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: e89f79d3-e269-4549-89fa-58b9307159b0
timestamp: 2026-01-25 00:10:37.090762
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: e89f79d3-e269-4549-89fa-58b9307159b0
timestamp: 2026-01-25 00:10:37.096875
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped 4 for 5 at pos 0
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: e89f79d3-e269-4549-89fa-58b9307159b0
timestamp: 2026-01-25 00:10:37.103291
player_id: cpu_0
player_name: River
action: draw_deck
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": false}]

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


game_id: e89f79d3-e269-4549-89fa-58b9307159b0
timestamp: 2026-01-25 00:10:37.109526
player_id: cpu_0
player_name: River
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped 3 for 6 at pos 4
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": false}]

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


game_id: e89f79d3-e269-4549-89fa-58b9307159b0
timestamp: 2026-01-25 00:10:37.115569
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": false}]

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


game_id: e89f79d3-e269-4549-89fa-58b9307159b0
timestamp: 2026-01-25 00:10:37.121392
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: swapped 6 for 8 at pos 3
hand_json:
[{"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": false}]

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


game_id: e89f79d3-e269-4549-89fa-58b9307159b0
timestamp: 2026-01-25 00:10:37.128097
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: e89f79d3-e269-4549-89fa-58b9307159b0
timestamp: 2026-01-25 00:10:37.134786
player_id: cpu_2
player_name: Maya
action: swap
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "A", "suit": "diamonds"}
decision_reason: swapped K for A at pos 5
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: e89f79d3-e269-4549-89fa-58b9307159b0
timestamp: 2026-01-25 00:10:37.141850
player_id: cpu_3
player_name: Marcus
action: take_discard
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: took A from discard
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: e89f79d3-e269-4549-89fa-58b9307159b0
timestamp: 2026-01-25 00:10:37.148376
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: swapped A for 4 at pos 0
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: e89f79d3-e269-4549-89fa-58b9307159b0
timestamp: 2026-01-25 00:10:37.154935
player_id: cpu_0
player_name: River
action: take_discard
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": false}]

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


game_id: e89f79d3-e269-4549-89fa-58b9307159b0
timestamp: 2026-01-25 00:10:37.161471
player_id: cpu_0
player_name: River
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: swapped 4 for Q at pos 5
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: e89f79d3-e269-4549-89fa-58b9307159b0
timestamp: 2026-01-25 00:10:37.167864
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": false}]

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


game_id: e89f79d3-e269-4549-89fa-58b9307159b0
timestamp: 2026-01-25 00:10:37.174477
player_id: cpu_1
player_name: Sage
action: swap
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped K for 6 at pos 3
hand_json:
[{"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": false}]

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


game_id: e89f79d3-e269-4549-89fa-58b9307159b0
timestamp: 2026-01-25 00:10:37.180424
player_id: cpu_2
player_name: Maya
action: take_discard
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: e89f79d3-e269-4549-89fa-58b9307159b0
timestamp: 2026-01-25 00:10:37.186618
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: swapped 6 for J at pos 4
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: e89f79d3-e269-4549-89fa-58b9307159b0
timestamp: 2026-01-25 00:10:37.193154
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: e89f79d3-e269-4549-89fa-58b9307159b0
timestamp: 2026-01-25 00:10:37.199703
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "3", "suit": "diamonds"}
decision_reason: swapped 2 for 3 at pos 5
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: e89f79d3-e269-4549-89fa-58b9307159b0
timestamp: 2026-01-25 00:10:37.206165
player_id: cpu_0
player_name: River
action: take_discard
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: e89f79d3-e269-4549-89fa-58b9307159b0
timestamp: 2026-01-25 00:10:37.215917
player_id: cpu_0
player_name: River
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped 3 for 6 at pos 1
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: e89f79d3-e269-4549-89fa-58b9307159b0
timestamp: 2026-01-25 00:10:37.222534
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": false}]

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


game_id: e89f79d3-e269-4549-89fa-58b9307159b0
timestamp: 2026-01-25 00:10:37.228797
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: swapped 6 for 9 at pos 4
hand_json:
[{"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}]

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


game_id: e89f79d3-e269-4549-89fa-58b9307159b0
timestamp: 2026-01-25 00:10:37.235643
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: 9
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: e89f79d3-e269-4549-89fa-58b9307159b0
timestamp: 2026-01-25 00:10:37.249730
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: e89f79d3-e269-4549-89fa-58b9307159b0
timestamp: 2026-01-25 00:10:37.256544
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "2", "suit": "spades"}
decision_reason: swapped 6 for 2 at pos 2
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: e89f79d3-e269-4549-89fa-58b9307159b0
timestamp: 2026-01-25 00:10:37.263110
player_id: cpu_0
player_name: River
action: take_discard
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took 2 from discard
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: e89f79d3-e269-4549-89fa-58b9307159b0
timestamp: 2026-01-25 00:10:37.269249
player_id: cpu_0
player_name: River
action: swap
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: swapped 2 for 4 at pos 2
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: e89f79d3-e269-4549-89fa-58b9307159b0
timestamp: 2026-01-25 00:10:37.275451
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}]

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


game_id: e89f79d3-e269-4549-89fa-58b9307159b0
timestamp: 2026-01-25 00:10:37.281161
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped 4 for 6 at pos 4
hand_json:
[{"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}]

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


game_id: e89f79d3-e269-4549-89fa-58b9307159b0
timestamp: 2026-01-25 00:10:37.287163
player_id: cpu_2
player_name: Maya
action: take_discard
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took 6 from discard
visible_opponents_json:
{"River": [{"rank": "3", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}, {"rank": "3", "suit": "spades"}, {"rank": "4", "suit": "hearts"}], "Sage": [{"rank": "K", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "diamonds"}], "Marcus": [{"rank": "A", "suit": "diamonds"}, {"rank": "6", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}]}


game_id: e89f79d3-e269-4549-89fa-58b9307159b0
timestamp: 2026-01-25 00:10:37.293341
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "K", "suit": "spades"}
decision_reason: swapped 6 for K at pos 1
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: e89f79d3-e269-4549-89fa-58b9307159b0
timestamp: 2026-01-25 00:10:37.299922
player_id: cpu_3
player_name: Marcus
action: take_discard
card_rank: K
card_suit: spades
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took K from discard
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: e89f79d3-e269-4549-89fa-58b9307159b0
timestamp: 2026-01-25 00:10:37.306378
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: K
card_suit: spades
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped K for 6 at pos 2
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: e89f79d3-e269-4549-89fa-58b9307159b0
timestamp: 2026-01-25 00:10:37.313070
player_id: cpu_0
player_name: River
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": "3", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: e89f79d3-e269-4549-89fa-58b9307159b0
timestamp: 2026-01-25 00:10:37.319306
player_id: cpu_0
player_name: River
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "3", "suit": "clubs"}
decision_reason: swapped 6 for 3 at pos 0
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: e89f79d3-e269-4549-89fa-58b9307159b0
timestamp: 2026-01-25 00:10:37.325190
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}]

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


game_id: e89f79d3-e269-4549-89fa-58b9307159b0
timestamp: 2026-01-25 00:10:37.331696
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: swapped 3 for 4 at pos 4
hand_json:
[{"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}]

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


game_id: e89f79d3-e269-4549-89fa-58b9307159b0
timestamp: 2026-01-25 00:10:37.338468
player_id: cpu_2
player_name: Maya
action: take_discard
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: e89f79d3-e269-4549-89fa-58b9307159b0
timestamp: 2026-01-25 00:10:37.344904
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped 4 for 6 at pos 1
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: e89f79d3-e269-4549-89fa-58b9307159b0
timestamp: 2026-01-25 00:10:37.351332
player_id: cpu_3
player_name: Marcus
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": "A", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: e89f79d3-e269-4549-89fa-58b9307159b0
timestamp: 2026-01-25 00:10:37.357882
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: swapped 6 for 9 at pos 1
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: e89f79d3-e269-4549-89fa-58b9307159b0
timestamp: 2026-01-25 00:10:37.364401
player_id: cpu_0
player_name: River
action: draw_deck
card_rank: J
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: e89f79d3-e269-4549-89fa-58b9307159b0
timestamp: 2026-01-25 00:10:37.377913
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}]

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


game_id: e89f79d3-e269-4549-89fa-58b9307159b0
timestamp: 2026-01-25 00:10:37.390678
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: J
card_suit: spades
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: e89f79d3-e269-4549-89fa-58b9307159b0
timestamp: 2026-01-25 00:10:37.409453
player_id: cpu_3
player_name: Marcus
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": "A", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}]


game_id: e89f79d3-e269-4549-89fa-58b9307159b0
timestamp: 2026-01-25 00:10:37.415885
player_id: cpu_0
player_name: River
action: take_discard
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: took 5 from discard
visible_opponents_json:
{"Sage": [{"rank": "K", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}], "Maya": [{"rank": "2", "suit": "clubs"}, {"rank": "4", "suit": "diamonds"}, {"rank": "6", "suit": "hearts"}, {"rank": "K", "suit": "diamonds"}], "Marcus": [{"rank": "A", "suit": "diamonds"}, {"rank": "6", "suit": "spades"}, {"rank": "K", "suit": "spades"}, {"rank": "7", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}]}


game_id: e89f79d3-e269-4549-89fa-58b9307159b0
timestamp: 2026-01-25 00:10:37.422070
player_id: cpu_0
player_name: River
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 5 for 6 at pos 0
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: e89f79d3-e269-4549-89fa-58b9307159b0
timestamp: 2026-01-25 00:10:37.428393
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: took 6 from discard
visible_opponents_json:
{"River": [{"rank": "5", "suit": "diamonds"}, {"rank": "3", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}, {"rank": "3", "suit": "spades"}, {"rank": "4", "suit": "hearts"}], "Maya": [{"rank": "2", "suit": "clubs"}, {"rank": "4", "suit": "diamonds"}, {"rank": "6", "suit": "hearts"}, {"rank": "K", "suit": "diamonds"}], "Marcus": [{"rank": "A", "suit": "diamonds"}, {"rank": "6", "suit": "spades"}, {"rank": "K", "suit": "spades"}, {"rank": "7", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}]}


game_id: e89f79d3-e269-4549-89fa-58b9307159b0
timestamp: 2026-01-25 00:10:37.434889
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: swapped 6 for 10 at pos 5
hand_json:
[{"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: e89f79d3-e269-4549-89fa-58b9307159b0
timestamp: 2026-01-25 00:10:37.441005
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"River": [{"rank": "5", "suit": "diamonds"}, {"rank": "3", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}, {"rank": "3", "suit": "spades"}, {"rank": "4", "suit": "hearts"}], "Sage": [{"rank": "K", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}, {"rank": "6", "suit": "clubs"}], "Marcus": [{"rank": "A", "suit": "diamonds"}, {"rank": "6", "suit": "spades"}, {"rank": "K", "suit": "spades"}, {"rank": "7", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}]}


game_id: e89f79d3-e269-4549-89fa-58b9307159b0
timestamp: 2026-01-25 00:10:37.447515
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped 3 for 6 at pos 4
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: e89f79d3-e269-4549-89fa-58b9307159b0
timestamp: 2026-01-25 00:10:37.454179
player_id: cpu_3
player_name: Marcus
action: take_discard
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: e89f79d3-e269-4549-89fa-58b9307159b0
timestamp: 2026-01-25 00:10:37.460668
player_id: cpu_3
player_name: Marcus
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": "A", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: e89f79d3-e269-4549-89fa-58b9307159b0
timestamp: 2026-01-25 00:10:37.467550
player_id: cpu_0
player_name: River
action: take_discard
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: e89f79d3-e269-4549-89fa-58b9307159b0
timestamp: 2026-01-25 00:10:37.474177
player_id: cpu_0
player_name: River
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: swapped 7 for Q at pos 3
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: e89f79d3-e269-4549-89fa-58b9307159b0
timestamp: 2026-01-25 00:10:37.480626
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: e89f79d3-e269-4549-89fa-58b9307159b0
timestamp: 2026-01-25 00:10:37.486956
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: swapped 7 for 4 at pos 2
hand_json:
[{"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: e89f79d3-e269-4549-89fa-58b9307159b0
timestamp: 2026-01-25 00:10:37.493915
player_id: cpu_2
player_name: Maya
action: take_discard
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: e89f79d3-e269-4549-89fa-58b9307159b0
timestamp: 2026-01-25 00:10:37.500859
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "spades"}
decision_reason: swapped 4 for 4 at pos 3
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: e89f79d3-e269-4549-89fa-58b9307159b0
timestamp: 2026-01-25 00:10:37.508546
player_id: cpu_3
player_name: Marcus
action: take_discard
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: e89f79d3-e269-4549-89fa-58b9307159b0
timestamp: 2026-01-25 00:10:37.516715
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped 4 for 6 at pos 1
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: a23586eb-fff4-4152-9fe2-cafe28c9acf5
timestamp: 2026-01-25 00:10:37.534184
player_id: cpu_0
player_name: Kenji
action: take_discard
card_rank: 8
card_suit: diamonds
decision_reason: took 8 from discard
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}]

visible_opponents_json:
{"Marcus": [{"rank": "2", "suit": "hearts"}, {"rank": "5", "suit": "diamonds"}], "Sofia": [{"rank": "A", "suit": "hearts"}, {"rank": "J", "suit": "hearts"}], "Maya": [{"rank": "10", "suit": "clubs"}, {"rank": "Q", "suit": "hearts"}]}


game_id: a23586eb-fff4-4152-9fe2-cafe28c9acf5
timestamp: 2026-01-25 00:10:37.540365
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 8
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: swapped 8 for 10 at pos 1
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}]

visible_opponents_json:
{"Marcus": [{"rank": "2", "suit": "hearts"}, {"rank": "5", "suit": "diamonds"}], "Sofia": [{"rank": "A", "suit": "hearts"}, {"rank": "J", "suit": "hearts"}], "Maya": [{"rank": "10", "suit": "clubs"}, {"rank": "Q", "suit": "hearts"}]}


game_id: a23586eb-fff4-4152-9fe2-cafe28c9acf5
timestamp: 2026-01-25 00:10:37.546625
player_id: cpu_1
player_name: Marcus
action: draw_deck
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}]

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


game_id: a23586eb-fff4-4152-9fe2-cafe28c9acf5
timestamp: 2026-01-25 00:10:37.559148
player_id: cpu_2
player_name: Sofia
action: take_discard
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "3", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}]

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


game_id: a23586eb-fff4-4152-9fe2-cafe28c9acf5
timestamp: 2026-01-25 00:10:37.565827
player_id: cpu_2
player_name: Sofia
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: swapped 7 for J at pos 3
hand_json:
[{"rank": "3", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}]

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


game_id: a23586eb-fff4-4152-9fe2-cafe28c9acf5
timestamp: 2026-01-25 00:10:37.572561
player_id: cpu_3
player_name: Maya
action: draw_deck
card_rank: K
card_suit: spades
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": true}]

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


game_id: a23586eb-fff4-4152-9fe2-cafe28c9acf5
timestamp: 2026-01-25 00:10:37.579043
player_id: cpu_3
player_name: Maya
action: swap
card_rank: K
card_suit: spades
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: swapped K for 10 at pos 1
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": true}]

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


game_id: a23586eb-fff4-4152-9fe2-cafe28c9acf5
timestamp: 2026-01-25 00:10:37.585686
player_id: cpu_0
player_name: Kenji
action: draw_deck
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: a23586eb-fff4-4152-9fe2-cafe28c9acf5
timestamp: 2026-01-25 00:10:37.592117
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: swapped 6 for 8 at pos 1
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: a23586eb-fff4-4152-9fe2-cafe28c9acf5
timestamp: 2026-01-25 00:10:37.598504
player_id: cpu_1
player_name: Marcus
action: draw_deck
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}]

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


game_id: a23586eb-fff4-4152-9fe2-cafe28c9acf5
timestamp: 2026-01-25 00:10:37.605046
player_id: cpu_1
player_name: Marcus
action: swap
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped K for 5 at pos 5
hand_json:
[{"rank": "7", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: a23586eb-fff4-4152-9fe2-cafe28c9acf5
timestamp: 2026-01-25 00:10:37.611493
player_id: cpu_2
player_name: Sofia
action: take_discard
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "3", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}]

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


game_id: a23586eb-fff4-4152-9fe2-cafe28c9acf5
timestamp: 2026-01-25 00:10:37.617756
player_id: cpu_2
player_name: Sofia
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped 5 for 7 at pos 3
hand_json:
[{"rank": "3", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}]

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


game_id: a23586eb-fff4-4152-9fe2-cafe28c9acf5
timestamp: 2026-01-25 00:10:37.624017
player_id: cpu_3
player_name: Maya
action: take_discard
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": true}]

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


game_id: a23586eb-fff4-4152-9fe2-cafe28c9acf5
timestamp: 2026-01-25 00:10:37.630235
player_id: cpu_3
player_name: Maya
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: swapped 7 for Q at pos 5
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}]

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


game_id: a23586eb-fff4-4152-9fe2-cafe28c9acf5
timestamp: 2026-01-25 00:10:37.643371
player_id: cpu_0
player_name: Kenji
action: draw_deck
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: a23586eb-fff4-4152-9fe2-cafe28c9acf5
timestamp: 2026-01-25 00:10:37.649950
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 2 for 7 at pos 3
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: a23586eb-fff4-4152-9fe2-cafe28c9acf5
timestamp: 2026-01-25 00:10:37.656289
player_id: cpu_1
player_name: Marcus
action: draw_deck
card_rank: 9
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: a23586eb-fff4-4152-9fe2-cafe28c9acf5
timestamp: 2026-01-25 00:10:37.668181
player_id: cpu_2
player_name: Sofia
action: draw_deck
card_rank: Q
card_suit: spades
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}]

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


game_id: a23586eb-fff4-4152-9fe2-cafe28c9acf5
timestamp: 2026-01-25 00:10:37.680856
player_id: cpu_3
player_name: Maya
action: draw_deck
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}]

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


game_id: a23586eb-fff4-4152-9fe2-cafe28c9acf5
timestamp: 2026-01-25 00:10:37.687230
player_id: cpu_3
player_name: Maya
action: swap
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped 2 for 7 at pos 5
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}]

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


game_id: a23586eb-fff4-4152-9fe2-cafe28c9acf5
timestamp: 2026-01-25 00:10:37.693432
player_id: cpu_0
player_name: Kenji
action: draw_deck
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: a23586eb-fff4-4152-9fe2-cafe28c9acf5
timestamp: 2026-01-25 00:10:37.705831
player_id: cpu_1
player_name: Marcus
action: draw_deck
card_rank: Q
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Kenji": [{"rank": "6", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}], "Sofia": [{"rank": "A", "suit": "hearts"}, {"rank": "5", "suit": "diamonds"}], "Maya": [{"rank": "K", "suit": "spades"}, {"rank": "2", "suit": "spades"}]}


game_id: a23586eb-fff4-4152-9fe2-cafe28c9acf5
timestamp: 2026-01-25 00:10:37.718067
player_id: cpu_2
player_name: Sofia
action: draw_deck
card_rank: J
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Kenji": [{"rank": "6", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}], "Marcus": [{"rank": "2", "suit": "hearts"}, {"rank": "K", "suit": "clubs"}], "Maya": [{"rank": "K", "suit": "spades"}, {"rank": "2", "suit": "spades"}]}


game_id: a23586eb-fff4-4152-9fe2-cafe28c9acf5
timestamp: 2026-01-25 00:10:37.750992
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped 5 for 6 at pos 1
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}]


game_id: a23586eb-fff4-4152-9fe2-cafe28c9acf5
timestamp: 2026-01-25 00:10:37.757123
player_id: cpu_1
player_name: Marcus
action: draw_deck
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Kenji": [{"rank": "5", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}], "Sofia": [{"rank": "A", "suit": "hearts"}, {"rank": "5", "suit": "diamonds"}], "Maya": [{"rank": "K", "suit": "spades"}, {"rank": "2", "suit": "spades"}]}


game_id: a23586eb-fff4-4152-9fe2-cafe28c9acf5
timestamp: 2026-01-25 00:10:37.763270
player_id: cpu_1
player_name: Marcus
action: swap
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped 4 for 6 at pos 2
hand_json:
[{"rank": "7", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: a23586eb-fff4-4152-9fe2-cafe28c9acf5
timestamp: 2026-01-25 00:10:37.769556
player_id: cpu_2
player_name: Sofia
action: take_discard
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: took 6 from discard
visible_opponents_json:
{"Kenji": [{"rank": "5", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}], "Marcus": [{"rank": "2", "suit": "hearts"}, {"rank": "4", "suit": "spades"}, {"rank": "K", "suit": "clubs"}], "Maya": [{"rank": "K", "suit": "spades"}, {"rank": "2", "suit": "spades"}]}


game_id: a23586eb-fff4-4152-9fe2-cafe28c9acf5
timestamp: 2026-01-25 00:10:37.776449
player_id: cpu_2
player_name: Sofia
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "3", "suit": "spades"}
decision_reason: swapped 6 for 3 at pos 0
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}]

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


game_id: a23586eb-fff4-4152-9fe2-cafe28c9acf5
timestamp: 2026-01-25 00:10:37.782848
player_id: cpu_3
player_name: Maya
action: take_discard
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: took 3 from discard
visible_opponents_json:
{"Kenji": [{"rank": "5", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}], "Marcus": [{"rank": "2", "suit": "hearts"}, {"rank": "4", "suit": "spades"}, {"rank": "K", "suit": "clubs"}], "Sofia": [{"rank": "6", "suit": "hearts"}, {"rank": "A", "suit": "hearts"}, {"rank": "5", "suit": "diamonds"}]}


game_id: a23586eb-fff4-4152-9fe2-cafe28c9acf5
timestamp: 2026-01-25 00:10:37.789182
player_id: cpu_3
player_name: Maya
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: swapped 3 for 4 at pos 0
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}]

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


game_id: a23586eb-fff4-4152-9fe2-cafe28c9acf5
timestamp: 2026-01-25 00:10:37.795900
player_id: cpu_0
player_name: Kenji
action: take_discard
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: a23586eb-fff4-4152-9fe2-cafe28c9acf5
timestamp: 2026-01-25 00:10:37.802168
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped 4 for 5 at pos 1
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: a23586eb-fff4-4152-9fe2-cafe28c9acf5
timestamp: 2026-01-25 00:10:37.808798
player_id: cpu_1
player_name: Marcus
action: take_discard
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "7", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: a23586eb-fff4-4152-9fe2-cafe28c9acf5
timestamp: 2026-01-25 00:10:37.815462
player_id: cpu_1
player_name: Marcus
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: swapped 5 for 10 at pos 3
hand_json:
[{"rank": "7", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: a23586eb-fff4-4152-9fe2-cafe28c9acf5
timestamp: 2026-01-25 00:10:37.821647
player_id: cpu_2
player_name: Sofia
action: draw_deck
card_rank: 8
card_suit: spades
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}]

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


game_id: a23586eb-fff4-4152-9fe2-cafe28c9acf5
timestamp: 2026-01-25 00:10:37.834065
player_id: cpu_3
player_name: Maya
action: draw_deck
card_rank: 9
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}]

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


game_id: a23586eb-fff4-4152-9fe2-cafe28c9acf5
timestamp: 2026-01-25 00:10:37.847606
player_id: cpu_0
player_name: Kenji
action: draw_deck
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: a23586eb-fff4-4152-9fe2-cafe28c9acf5
timestamp: 2026-01-25 00:10:37.854036
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: swapped 4 for Q at pos 4
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: a23586eb-fff4-4152-9fe2-cafe28c9acf5
timestamp: 2026-01-25 00:10:37.860767
player_id: cpu_1
player_name: Marcus
action: draw_deck
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: a23586eb-fff4-4152-9fe2-cafe28c9acf5
timestamp: 2026-01-25 00:10:37.873928
player_id: cpu_2
player_name: Sofia
action: draw_deck
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Kenji": [{"rank": "4", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}, {"rank": "4", "suit": "hearts"}], "Marcus": [{"rank": "2", "suit": "hearts"}, {"rank": "4", "suit": "spades"}, {"rank": "5", "suit": "clubs"}, {"rank": "K", "suit": "clubs"}], "Maya": [{"rank": "3", "suit": "spades"}, {"rank": "K", "suit": "spades"}, {"rank": "2", "suit": "spades"}]}


game_id: a23586eb-fff4-4152-9fe2-cafe28c9acf5
timestamp: 2026-01-25 00:10:37.880530
player_id: cpu_2
player_name: Sofia
action: swap
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped 3 for 6 at pos 0
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}]

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


game_id: a23586eb-fff4-4152-9fe2-cafe28c9acf5
timestamp: 2026-01-25 00:10:37.887123
player_id: cpu_3
player_name: Maya
action: take_discard
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: took 6 from discard
visible_opponents_json:
{"Kenji": [{"rank": "4", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}, {"rank": "4", "suit": "hearts"}], "Marcus": [{"rank": "2", "suit": "hearts"}, {"rank": "4", "suit": "spades"}, {"rank": "5", "suit": "clubs"}, {"rank": "K", "suit": "clubs"}], "Sofia": [{"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "hearts"}, {"rank": "5", "suit": "diamonds"}]}


game_id: a23586eb-fff4-4152-9fe2-cafe28c9acf5
timestamp: 2026-01-25 00:10:37.893714
player_id: cpu_3
player_name: Maya
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: swapped 6 for J at pos 4
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}]

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


game_id: a23586eb-fff4-4152-9fe2-cafe28c9acf5
timestamp: 2026-01-25 00:10:37.899987
player_id: cpu_0
player_name: Kenji
action: draw_deck
card_rank: J
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": "4", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: a23586eb-fff4-4152-9fe2-cafe28c9acf5
timestamp: 2026-01-25 00:10:37.906326
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: J
card_suit: clubs
discard_top_json: {"rank": "K", "suit": "diamonds"}
decision_reason: swapped J for K at pos 0
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: a23586eb-fff4-4152-9fe2-cafe28c9acf5
timestamp: 2026-01-25 00:10:37.912789
player_id: cpu_1
player_name: Marcus
action: take_discard
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: took K from discard
visible_opponents_json:
{"Kenji": [{"rank": "J", "suit": "clubs"}, {"rank": "4", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}, {"rank": "4", "suit": "hearts"}], "Sofia": [{"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "hearts"}, {"rank": "5", "suit": "diamonds"}], "Maya": [{"rank": "3", "suit": "spades"}, {"rank": "K", "suit": "spades"}, {"rank": "6", "suit": "hearts"}, {"rank": "2", "suit": "spades"}]}


game_id: a23586eb-fff4-4152-9fe2-cafe28c9acf5
timestamp: 2026-01-25 00:10:37.918870
player_id: cpu_1
player_name: Marcus
action: swap
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped K for 5 at pos 3
hand_json:
[{"rank": "7", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: a23586eb-fff4-4152-9fe2-cafe28c9acf5
timestamp: 2026-01-25 00:10:37.925281
player_id: cpu_2
player_name: Sofia
action: take_discard
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}]

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


game_id: a23586eb-fff4-4152-9fe2-cafe28c9acf5
timestamp: 2026-01-25 00:10:37.931865
player_id: cpu_2
player_name: Sofia
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "2", "suit": "clubs"}
decision_reason: swapped 5 for 2 at pos 2
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}]

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


game_id: a23586eb-fff4-4152-9fe2-cafe28c9acf5
timestamp: 2026-01-25 00:10:37.938022
player_id: cpu_3
player_name: Maya
action: take_discard
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: took 2 from discard
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}]

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


game_id: a23586eb-fff4-4152-9fe2-cafe28c9acf5
timestamp: 2026-01-25 00:10:37.944147
player_id: cpu_3
player_name: Maya
action: swap
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped 2 for 6 at pos 4
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}]

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


game_id: a23586eb-fff4-4152-9fe2-cafe28c9acf5
timestamp: 2026-01-25 00:10:37.950597
player_id: cpu_0
player_name: Kenji
action: take_discard
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: a23586eb-fff4-4152-9fe2-cafe28c9acf5
timestamp: 2026-01-25 00:10:37.959456
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: swapped 6 for J at pos 0
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: a23586eb-fff4-4152-9fe2-cafe28c9acf5
timestamp: 2026-01-25 00:10:37.966318
player_id: cpu_1
player_name: Marcus
action: draw_deck
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: a23586eb-fff4-4152-9fe2-cafe28c9acf5
timestamp: 2026-01-25 00:10:37.972963
player_id: cpu_1
player_name: Marcus
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "4", "suit": "spades"}
decision_reason: swapped 3 for 4 at pos 2
hand_json:
[{"rank": "7", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: a23586eb-fff4-4152-9fe2-cafe28c9acf5
timestamp: 2026-01-25 00:10:37.979611
player_id: cpu_2
player_name: Sofia
action: take_discard
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}]

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


game_id: a23586eb-fff4-4152-9fe2-cafe28c9acf5
timestamp: 2026-01-25 00:10:37.985826
player_id: cpu_2
player_name: Sofia
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": "3", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: a23586eb-fff4-4152-9fe2-cafe28c9acf5
timestamp: 2026-01-25 00:10:37.991972
player_id: cpu_3
player_name: Maya
action: take_discard
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}]

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


game_id: a23586eb-fff4-4152-9fe2-cafe28c9acf5
timestamp: 2026-01-25 00:10:37.998309
player_id: cpu_3
player_name: Maya
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "K", "suit": "hearts"}
decision_reason: swapped 4 for K at pos 3
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}]

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


game_id: a23586eb-fff4-4152-9fe2-cafe28c9acf5
timestamp: 2026-01-25 00:10:38.004560
player_id: cpu_0
player_name: Kenji
action: draw_deck
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "K", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: a23586eb-fff4-4152-9fe2-cafe28c9acf5
timestamp: 2026-01-25 00:10:38.010749
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped 5 for 6 at pos 0
hand_json:
[{"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: a23586eb-fff4-4152-9fe2-cafe28c9acf5
timestamp: 2026-01-25 00:10:38.016897
player_id: cpu_1
player_name: Marcus
action: take_discard
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "K", "suit": "hearts"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "7", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: a23586eb-fff4-4152-9fe2-cafe28c9acf5
timestamp: 2026-01-25 00:10:38.023072
player_id: cpu_1
player_name: Marcus
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped 6 for 7 at pos 0
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: a23586eb-fff4-4152-9fe2-cafe28c9acf5
timestamp: 2026-01-25 00:10:38.029599
player_id: cpu_2
player_name: Sofia
action: take_discard
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "K", "suit": "hearts"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: a23586eb-fff4-4152-9fe2-cafe28c9acf5
timestamp: 2026-01-25 00:10:38.036046
player_id: cpu_2
player_name: Sofia
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: swapped 7 for 9 at pos 4
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: a23586eb-fff4-4152-9fe2-cafe28c9acf5
timestamp: 2026-01-25 00:10:38.044634
player_id: cpu_3
player_name: Maya
action: draw_deck
card_rank: A
card_suit: spades
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}]

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


game_id: a23586eb-fff4-4152-9fe2-cafe28c9acf5
timestamp: 2026-01-25 00:10:38.051206
player_id: cpu_3
player_name: Maya
action: swap
card_rank: A
card_suit: spades
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: swapped A for 4 at pos 3
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}]

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


game_id: a23586eb-fff4-4152-9fe2-cafe28c9acf5
timestamp: 2026-01-25 00:10:38.057711
player_id: cpu_0
player_name: Kenji
action: take_discard
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: a23586eb-fff4-4152-9fe2-cafe28c9acf5
timestamp: 2026-01-25 00:10:38.064332
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped 4 for 5 at pos 0
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: a23586eb-fff4-4152-9fe2-cafe28c9acf5
timestamp: 2026-01-25 00:10:38.070441
player_id: cpu_1
player_name: Marcus
action: take_discard
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: a23586eb-fff4-4152-9fe2-cafe28c9acf5
timestamp: 2026-01-25 00:10:38.076664
player_id: cpu_1
player_name: Marcus
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped 5 for 6 at pos 0
hand_json:
[{"rank": "5", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: 2fcc785e-64c7-48ce-b5a6-c00f8ca4da65
timestamp: 2026-01-25 00:10:38.094157
player_id: cpu_0
player_name: Sofia
action: take_discard
card_rank: 6
card_suit: clubs
decision_reason: took 6 from discard
hand_json:
[{"rank": "J", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}]

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


game_id: 2fcc785e-64c7-48ce-b5a6-c00f8ca4da65
timestamp: 2026-01-25 00:10:38.100174
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: swapped 6 for Q at pos 2
hand_json:
[{"rank": "J", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}]

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


game_id: 2fcc785e-64c7-48ce-b5a6-c00f8ca4da65
timestamp: 2026-01-25 00:10:38.106278
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}]

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


game_id: 2fcc785e-64c7-48ce-b5a6-c00f8ca4da65
timestamp: 2026-01-25 00:10:38.112357
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: swapped 7 for 10 at pos 4
hand_json:
[{"rank": "4", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}]

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


game_id: 2fcc785e-64c7-48ce-b5a6-c00f8ca4da65
timestamp: 2026-01-25 00:10:38.118754
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}]

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


game_id: 2fcc785e-64c7-48ce-b5a6-c00f8ca4da65
timestamp: 2026-01-25 00:10:38.125234
player_id: cpu_2
player_name: Sage
action: swap
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "3", "suit": "hearts"}
decision_reason: swapped A for 3 at pos 1
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}]

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


game_id: 2fcc785e-64c7-48ce-b5a6-c00f8ca4da65
timestamp: 2026-01-25 00:10:38.131248
player_id: cpu_3
player_name: Diego
action: take_discard
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": true}]

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


game_id: 2fcc785e-64c7-48ce-b5a6-c00f8ca4da65
timestamp: 2026-01-25 00:10:38.137179
player_id: cpu_3
player_name: Diego
action: swap
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: swapped 3 for 10 at pos 2
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": true}]

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


game_id: 2fcc785e-64c7-48ce-b5a6-c00f8ca4da65
timestamp: 2026-01-25 00:10:38.143035
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}]

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


game_id: 2fcc785e-64c7-48ce-b5a6-c00f8ca4da65
timestamp: 2026-01-25 00:10:38.149275
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "3", "suit": "diamonds"}
decision_reason: swapped 6 for 3 at pos 5
hand_json:
[{"rank": "J", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}]

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


game_id: 2fcc785e-64c7-48ce-b5a6-c00f8ca4da65
timestamp: 2026-01-25 00:10:38.155424
player_id: cpu_1
player_name: Kenji
action: take_discard
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "4", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}]

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


game_id: 2fcc785e-64c7-48ce-b5a6-c00f8ca4da65
timestamp: 2026-01-25 00:10:38.161690
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped 3 for 7 at pos 4
hand_json:
[{"rank": "4", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}]

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


game_id: 2fcc785e-64c7-48ce-b5a6-c00f8ca4da65
timestamp: 2026-01-25 00:10:38.167960
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}]

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


game_id: 2fcc785e-64c7-48ce-b5a6-c00f8ca4da65
timestamp: 2026-01-25 00:10:38.174114
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "3", "suit": "spades"}
decision_reason: swapped 4 for 3 at pos 4
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}]

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


game_id: 2fcc785e-64c7-48ce-b5a6-c00f8ca4da65
timestamp: 2026-01-25 00:10:38.180344
player_id: cpu_3
player_name: Diego
action: take_discard
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": true}]

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


game_id: 2fcc785e-64c7-48ce-b5a6-c00f8ca4da65
timestamp: 2026-01-25 00:10:38.186971
player_id: cpu_3
player_name: Diego
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: swapped 3 for J at pos 5
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 2fcc785e-64c7-48ce-b5a6-c00f8ca4da65
timestamp: 2026-01-25 00:10:38.193403
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: J
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}]

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


game_id: 2fcc785e-64c7-48ce-b5a6-c00f8ca4da65
timestamp: 2026-01-25 00:10:38.207415
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}]

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


game_id: 2fcc785e-64c7-48ce-b5a6-c00f8ca4da65
timestamp: 2026-01-25 00:10:38.220441
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: 9
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}]

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


game_id: 2fcc785e-64c7-48ce-b5a6-c00f8ca4da65
timestamp: 2026-01-25 00:10:38.239546
player_id: cpu_3
player_name: Diego
action: swap
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped K for 6 at pos 1
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}]


game_id: 2fcc785e-64c7-48ce-b5a6-c00f8ca4da65
timestamp: 2026-01-25 00:10:38.245775
player_id: cpu_0
player_name: Sofia
action: take_discard
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: took 6 from discard
visible_opponents_json:
{"Kenji": [{"rank": "5", "suit": "spades"}, {"rank": "3", "suit": "diamonds"}], "Sage": [{"rank": "A", "suit": "diamonds"}, {"rank": "4", "suit": "hearts"}, {"rank": "2", "suit": "spades"}], "Diego": [{"rank": "K", "suit": "diamonds"}, {"rank": "3", "suit": "hearts"}, {"rank": "3", "suit": "spades"}]}


game_id: 2fcc785e-64c7-48ce-b5a6-c00f8ca4da65
timestamp: 2026-01-25 00:10:38.251812
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: swapped 6 for 8 at pos 4
hand_json:
[{"rank": "J", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}]

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


game_id: 2fcc785e-64c7-48ce-b5a6-c00f8ca4da65
timestamp: 2026-01-25 00:10:38.257824
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Sofia": [{"rank": "6", "suit": "clubs"}, {"rank": "6", "suit": "hearts"}, {"rank": "6", "suit": "spades"}], "Sage": [{"rank": "A", "suit": "diamonds"}, {"rank": "4", "suit": "hearts"}, {"rank": "2", "suit": "spades"}], "Diego": [{"rank": "K", "suit": "diamonds"}, {"rank": "3", "suit": "hearts"}, {"rank": "3", "suit": "spades"}]}


game_id: 2fcc785e-64c7-48ce-b5a6-c00f8ca4da65
timestamp: 2026-01-25 00:10:38.264001
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: swapped 5 for 10 at pos 5
hand_json:
[{"rank": "4", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}]

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


game_id: 2fcc785e-64c7-48ce-b5a6-c00f8ca4da65
timestamp: 2026-01-25 00:10:38.270392
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Sofia": [{"rank": "6", "suit": "clubs"}, {"rank": "6", "suit": "hearts"}, {"rank": "6", "suit": "spades"}], "Kenji": [{"rank": "5", "suit": "spades"}, {"rank": "3", "suit": "diamonds"}, {"rank": "5", "suit": "diamonds"}], "Diego": [{"rank": "K", "suit": "diamonds"}, {"rank": "3", "suit": "hearts"}, {"rank": "3", "suit": "spades"}]}


game_id: 2fcc785e-64c7-48ce-b5a6-c00f8ca4da65
timestamp: 2026-01-25 00:10:38.282656
player_id: cpu_3
player_name: Diego
action: draw_deck
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 2fcc785e-64c7-48ce-b5a6-c00f8ca4da65
timestamp: 2026-01-25 00:10:38.289178
player_id: cpu_3
player_name: Diego
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "3", "suit": "hearts"}
decision_reason: swapped A for 3 at pos 2
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 2fcc785e-64c7-48ce-b5a6-c00f8ca4da65
timestamp: 2026-01-25 00:10:38.295277
player_id: cpu_0
player_name: Sofia
action: take_discard
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "J", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}]

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


game_id: 2fcc785e-64c7-48ce-b5a6-c00f8ca4da65
timestamp: 2026-01-25 00:10:38.301505
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 3 for 6 at pos 2
hand_json:
[{"rank": "J", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}]

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


game_id: 2fcc785e-64c7-48ce-b5a6-c00f8ca4da65
timestamp: 2026-01-25 00:10:38.307836
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}]

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


game_id: 2fcc785e-64c7-48ce-b5a6-c00f8ca4da65
timestamp: 2026-01-25 00:10:38.321158
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: K
card_suit: spades
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Sofia": [{"rank": "3", "suit": "hearts"}, {"rank": "6", "suit": "hearts"}, {"rank": "6", "suit": "spades"}], "Kenji": [{"rank": "5", "suit": "spades"}, {"rank": "3", "suit": "diamonds"}, {"rank": "5", "suit": "diamonds"}], "Diego": [{"rank": "K", "suit": "diamonds"}, {"rank": "A", "suit": "hearts"}, {"rank": "3", "suit": "spades"}]}


game_id: 2fcc785e-64c7-48ce-b5a6-c00f8ca4da65
timestamp: 2026-01-25 00:10:38.327387
player_id: cpu_2
player_name: Sage
action: swap
card_rank: K
card_suit: spades
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: swapped K for 4 at pos 4
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}]

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


game_id: 2fcc785e-64c7-48ce-b5a6-c00f8ca4da65
timestamp: 2026-01-25 00:10:38.333980
player_id: cpu_3
player_name: Diego
action: take_discard
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 2fcc785e-64c7-48ce-b5a6-c00f8ca4da65
timestamp: 2026-01-25 00:10:38.340396
player_id: cpu_3
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": "A", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 2fcc785e-64c7-48ce-b5a6-c00f8ca4da65
timestamp: 2026-01-25 00:10:38.350750
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}]

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


game_id: 2fcc785e-64c7-48ce-b5a6-c00f8ca4da65
timestamp: 2026-01-25 00:10:38.356892
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped K for 6 at pos 4
hand_json:
[{"rank": "J", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}]

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


game_id: 2fcc785e-64c7-48ce-b5a6-c00f8ca4da65
timestamp: 2026-01-25 00:10:38.365785
player_id: cpu_1
player_name: Kenji
action: take_discard
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: took 6 from discard
visible_opponents_json:
{"Sofia": [{"rank": "3", "suit": "hearts"}, {"rank": "K", "suit": "hearts"}, {"rank": "6", "suit": "spades"}], "Sage": [{"rank": "A", "suit": "diamonds"}, {"rank": "K", "suit": "spades"}, {"rank": "2", "suit": "spades"}], "Diego": [{"rank": "K", "suit": "diamonds"}, {"rank": "A", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}, {"rank": "3", "suit": "spades"}]}


game_id: 2fcc785e-64c7-48ce-b5a6-c00f8ca4da65
timestamp: 2026-01-25 00:10:38.372031
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "4", "suit": "spades"}
decision_reason: swapped 6 for 4 at pos 0
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}]

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


game_id: 2fcc785e-64c7-48ce-b5a6-c00f8ca4da65
timestamp: 2026-01-25 00:10:38.378447
player_id: cpu_2
player_name: Sage
action: take_discard
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}]

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


game_id: 2fcc785e-64c7-48ce-b5a6-c00f8ca4da65
timestamp: 2026-01-25 00:10:38.384956
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "2", "suit": "diamonds"}
decision_reason: swapped 4 for 2 at pos 2
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}]

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


game_id: 2fcc785e-64c7-48ce-b5a6-c00f8ca4da65
timestamp: 2026-01-25 00:10:38.391493
player_id: cpu_3
player_name: Diego
action: take_discard
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: took 2 from discard
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 2fcc785e-64c7-48ce-b5a6-c00f8ca4da65
timestamp: 2026-01-25 00:10:38.398294
player_id: cpu_3
player_name: Diego
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": "A", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 2fcc785e-64c7-48ce-b5a6-c00f8ca4da65
timestamp: 2026-01-25 00:10:38.404807
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
hand_json:
[{"rank": "J", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}]

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


game_id: 2fcc785e-64c7-48ce-b5a6-c00f8ca4da65
timestamp: 2026-01-25 00:10:38.411133
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped 4 for 6 at pos 5
hand_json:
[{"rank": "J", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: 2fcc785e-64c7-48ce-b5a6-c00f8ca4da65
timestamp: 2026-01-25 00:10:38.417948
player_id: cpu_1
player_name: Kenji
action: take_discard
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}]

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


