# moves

game_id: c10058f8-d652-4c28-8953-ff2b945a27ff
timestamp: 2026-01-25 00:08:51.028763
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: swapped 5 for J at pos 0
hand_json:
[{"rank": "5", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}]

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


game_id: c10058f8-d652-4c28-8953-ff2b945a27ff
timestamp: 2026-01-25 00:08:51.034727
player_id: cpu_2
player_name: Priya
action: draw_deck
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}]

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


game_id: c10058f8-d652-4c28-8953-ff2b945a27ff
timestamp: 2026-01-25 00:08:51.040962
player_id: cpu_2
player_name: Priya
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: swapped 3 for 4 at pos 2
hand_json:
[{"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}]

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


game_id: c10058f8-d652-4c28-8953-ff2b945a27ff
timestamp: 2026-01-25 00:08:51.046948
player_id: cpu_3
player_name: Kenji
action: take_discard
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}]

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


game_id: c10058f8-d652-4c28-8953-ff2b945a27ff
timestamp: 2026-01-25 00:08:51.052992
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped 4 for 7 at pos 2
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}]

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


game_id: c10058f8-d652-4c28-8953-ff2b945a27ff
timestamp: 2026-01-25 00:08:51.059009
player_id: cpu_0
player_name: Marcus
action: take_discard
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: took 7 from discard
visible_opponents_json:
{"Maya": [{"rank": "5", "suit": "spades"}, {"rank": "2", "suit": "clubs"}, {"rank": "5", "suit": "diamonds"}, {"rank": "K", "suit": "hearts"}], "Priya": [{"rank": "A", "suit": "clubs"}, {"rank": "3", "suit": "diamonds"}, {"rank": "A", "suit": "diamonds"}], "Kenji": [{"rank": "3", "suit": "clubs"}, {"rank": "4", "suit": "clubs"}, {"rank": "7", "suit": "diamonds"}]}


game_id: c10058f8-d652-4c28-8953-ff2b945a27ff
timestamp: 2026-01-25 00:08:51.064501
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "3", "suit": "spades"}
decision_reason: swapped 7 for 3 at pos 1
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}]

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


game_id: c10058f8-d652-4c28-8953-ff2b945a27ff
timestamp: 2026-01-25 00:08:51.070261
player_id: cpu_1
player_name: Maya
action: take_discard
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "5", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}]

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


game_id: c10058f8-d652-4c28-8953-ff2b945a27ff
timestamp: 2026-01-25 00:08:51.075845
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped 3 for 5 at pos 0
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}]

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


game_id: c10058f8-d652-4c28-8953-ff2b945a27ff
timestamp: 2026-01-25 00:08:51.081383
player_id: cpu_2
player_name: Priya
action: take_discard
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}]

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


game_id: c10058f8-d652-4c28-8953-ff2b945a27ff
timestamp: 2026-01-25 00:08:51.086853
player_id: cpu_2
player_name: Priya
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: swapped 5 for Q at pos 3
hand_json:
[{"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}]

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


game_id: c10058f8-d652-4c28-8953-ff2b945a27ff
timestamp: 2026-01-25 00:08:51.092823
player_id: cpu_3
player_name: Kenji
action: draw_deck
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}]

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


game_id: c10058f8-d652-4c28-8953-ff2b945a27ff
timestamp: 2026-01-25 00:08:51.098417
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 4 for 7 at pos 5
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}]

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


game_id: c10058f8-d652-4c28-8953-ff2b945a27ff
timestamp: 2026-01-25 00:08:51.104375
player_id: cpu_0
player_name: Marcus
action: take_discard
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}]

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


game_id: c10058f8-d652-4c28-8953-ff2b945a27ff
timestamp: 2026-01-25 00:08:51.110194
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: swapped 7 for 4 at pos 5
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}]

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


game_id: c10058f8-d652-4c28-8953-ff2b945a27ff
timestamp: 2026-01-25 00:08:51.116076
player_id: cpu_1
player_name: Maya
action: take_discard
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}]

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


game_id: c10058f8-d652-4c28-8953-ff2b945a27ff
timestamp: 2026-01-25 00:08:51.121839
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped 4 for 5 at pos 3
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}]

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


game_id: c10058f8-d652-4c28-8953-ff2b945a27ff
timestamp: 2026-01-25 00:08:51.127792
player_id: cpu_2
player_name: Priya
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": "8", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}]

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


game_id: c10058f8-d652-4c28-8953-ff2b945a27ff
timestamp: 2026-01-25 00:08:51.133993
player_id: cpu_2
player_name: Priya
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: swapped 5 for 8 at pos 0
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}]

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


game_id: c10058f8-d652-4c28-8953-ff2b945a27ff
timestamp: 2026-01-25 00:08:51.140168
player_id: cpu_3
player_name: Kenji
action: draw_deck
card_rank: 8
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}]

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


game_id: c10058f8-d652-4c28-8953-ff2b945a27ff
timestamp: 2026-01-25 00:08:51.146042
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 8
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: swapped 8 for 10 at pos 1
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}]

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


game_id: c10058f8-d652-4c28-8953-ff2b945a27ff
timestamp: 2026-01-25 00:08:51.151914
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}]

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


game_id: c10058f8-d652-4c28-8953-ff2b945a27ff
timestamp: 2026-01-25 00:08:51.161541
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped 6 for 7 at pos 1
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}]

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


game_id: c10058f8-d652-4c28-8953-ff2b945a27ff
timestamp: 2026-01-25 00:08:51.167307
player_id: cpu_1
player_name: Maya
action: take_discard
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}]

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


game_id: c10058f8-d652-4c28-8953-ff2b945a27ff
timestamp: 2026-01-25 00:08:51.172847
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: swapped 7 for 9 at pos 5
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}]

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


game_id: c10058f8-d652-4c28-8953-ff2b945a27ff
timestamp: 2026-01-25 00:08:51.178485
player_id: cpu_2
player_name: Priya
action: draw_deck
card_rank: A
card_suit: spades
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}]

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


game_id: c10058f8-d652-4c28-8953-ff2b945a27ff
timestamp: 2026-01-25 00:08:51.184754
player_id: cpu_2
player_name: Priya
action: swap
card_rank: A
card_suit: spades
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped A for 5 at pos 0
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}]

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


game_id: c10058f8-d652-4c28-8953-ff2b945a27ff
timestamp: 2026-01-25 00:08:51.190814
player_id: cpu_3
player_name: Kenji
action: take_discard
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}]

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


game_id: c10058f8-d652-4c28-8953-ff2b945a27ff
timestamp: 2026-01-25 00:08:51.196442
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: swapped 5 for 8 at pos 1
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}]

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


game_id: c10058f8-d652-4c28-8953-ff2b945a27ff
timestamp: 2026-01-25 00:08:51.201943
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: 8
card_suit: spades
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}]

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


game_id: c10058f8-d652-4c28-8953-ff2b945a27ff
timestamp: 2026-01-25 00:08:51.213604
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}]

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


game_id: c10058f8-d652-4c28-8953-ff2b945a27ff
timestamp: 2026-01-25 00:08:51.219419
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped 6 for 7 at pos 5
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: c10058f8-d652-4c28-8953-ff2b945a27ff
timestamp: 2026-01-25 00:08:51.224879
player_id: cpu_2
player_name: Priya
action: take_discard
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}]

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


game_id: c10058f8-d652-4c28-8953-ff2b945a27ff
timestamp: 2026-01-25 00:08:51.230503
player_id: cpu_2
player_name: Priya
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "K", "suit": "clubs"}
decision_reason: swapped 7 for K at pos 5
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}]

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


game_id: c10058f8-d652-4c28-8953-ff2b945a27ff
timestamp: 2026-01-25 00:08:51.236207
player_id: cpu_3
player_name: Kenji
action: take_discard
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: took K from discard
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}]

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


game_id: c10058f8-d652-4c28-8953-ff2b945a27ff
timestamp: 2026-01-25 00:08:51.241907
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped K for 5 at pos 1
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}]

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


game_id: c10058f8-d652-4c28-8953-ff2b945a27ff
timestamp: 2026-01-25 00:08:51.247854
player_id: cpu_0
player_name: Marcus
action: take_discard
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: took 5 from discard
visible_opponents_json:
{"Maya": [{"rank": "3", "suit": "spades"}, {"rank": "2", "suit": "clubs"}, {"rank": "4", "suit": "hearts"}, {"rank": "K", "suit": "hearts"}, {"rank": "6", "suit": "clubs"}], "Priya": [{"rank": "A", "suit": "spades"}, {"rank": "A", "suit": "clubs"}, {"rank": "3", "suit": "diamonds"}, {"rank": "5", "suit": "spades"}, {"rank": "A", "suit": "diamonds"}, {"rank": "7", "suit": "hearts"}], "Kenji": [{"rank": "3", "suit": "clubs"}, {"rank": "K", "suit": "clubs"}, {"rank": "4", "suit": "clubs"}, {"rank": "4", "suit": "diamonds"}]}


game_id: c10058f8-d652-4c28-8953-ff2b945a27ff
timestamp: 2026-01-25 00:08:51.253839
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 5 for 7 at pos 5
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}]

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


game_id: c10058f8-d652-4c28-8953-ff2b945a27ff
timestamp: 2026-01-25 00:08:51.259834
player_id: cpu_1
player_name: Maya
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": "3", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: c10058f8-d652-4c28-8953-ff2b945a27ff
timestamp: 2026-01-25 00:08:51.266234
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped 7 for 6 at pos 1
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: 9116ab39-6bda-47b0-ba9a-a7b392aeaa1b
timestamp: 2026-01-25 00:08:51.282989
player_id: cpu_0
player_name: River
action: draw_deck
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 9116ab39-6bda-47b0-ba9a-a7b392aeaa1b
timestamp: 2026-01-25 00:08:51.294281
player_id: cpu_1
player_name: Marcus
action: take_discard
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}]

visible_opponents_json:
{"River": [{"rank": "A", "suit": "diamonds"}, {"rank": "A", "suit": "hearts"}], "Maya": [{"rank": "Q", "suit": "hearts"}, {"rank": "5", "suit": "spades"}], "Kenji": [{"rank": "J", "suit": "diamonds"}, {"rank": "7", "suit": "diamonds"}]}


game_id: 9116ab39-6bda-47b0-ba9a-a7b392aeaa1b
timestamp: 2026-01-25 00:08:51.299831
player_id: cpu_1
player_name: Marcus
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: swapped 6 for 8 at pos 3
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}]

visible_opponents_json:
{"River": [{"rank": "A", "suit": "diamonds"}, {"rank": "A", "suit": "hearts"}], "Maya": [{"rank": "Q", "suit": "hearts"}, {"rank": "5", "suit": "spades"}], "Kenji": [{"rank": "J", "suit": "diamonds"}, {"rank": "7", "suit": "diamonds"}]}


game_id: 9116ab39-6bda-47b0-ba9a-a7b392aeaa1b
timestamp: 2026-01-25 00:08:51.305668
player_id: cpu_2
player_name: Maya
action: take_discard
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took 8 from discard
hand_json:
[{"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}]

visible_opponents_json:
{"River": [{"rank": "A", "suit": "diamonds"}, {"rank": "A", "suit": "hearts"}], "Marcus": [{"rank": "A", "suit": "clubs"}, {"rank": "6", "suit": "diamonds"}], "Kenji": [{"rank": "J", "suit": "diamonds"}, {"rank": "7", "suit": "diamonds"}]}


game_id: 9116ab39-6bda-47b0-ba9a-a7b392aeaa1b
timestamp: 2026-01-25 00:08:51.311212
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: swapped 8 for Q at pos 2
hand_json:
[{"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}]

visible_opponents_json:
{"River": [{"rank": "A", "suit": "diamonds"}, {"rank": "A", "suit": "hearts"}], "Marcus": [{"rank": "A", "suit": "clubs"}, {"rank": "6", "suit": "diamonds"}], "Kenji": [{"rank": "J", "suit": "diamonds"}, {"rank": "7", "suit": "diamonds"}]}


game_id: 9116ab39-6bda-47b0-ba9a-a7b392aeaa1b
timestamp: 2026-01-25 00:08:51.316765
player_id: cpu_3
player_name: Kenji
action: draw_deck
card_rank: Q
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}]

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


game_id: 9116ab39-6bda-47b0-ba9a-a7b392aeaa1b
timestamp: 2026-01-25 00:08:51.328612
player_id: cpu_0
player_name: River
action: draw_deck
card_rank: 10
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 9116ab39-6bda-47b0-ba9a-a7b392aeaa1b
timestamp: 2026-01-25 00:08:51.334266
player_id: cpu_0
player_name: River
action: swap
card_rank: 10
card_suit: spades
discard_top_json: {"rank": "3", "suit": "clubs"}
decision_reason: swapped 10 for 3 at pos 4
hand_json:
[{"rank": "6", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 9116ab39-6bda-47b0-ba9a-a7b392aeaa1b
timestamp: 2026-01-25 00:08:51.342082
player_id: cpu_1
player_name: Marcus
action: take_discard
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}]

visible_opponents_json:
{"River": [{"rank": "A", "suit": "diamonds"}, {"rank": "10", "suit": "spades"}, {"rank": "A", "suit": "hearts"}], "Maya": [{"rank": "8", "suit": "hearts"}, {"rank": "5", "suit": "spades"}], "Kenji": [{"rank": "J", "suit": "diamonds"}, {"rank": "7", "suit": "diamonds"}]}


game_id: 9116ab39-6bda-47b0-ba9a-a7b392aeaa1b
timestamp: 2026-01-25 00:08:51.348341
player_id: cpu_1
player_name: Marcus
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped 3 for 6 at pos 3
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}]

visible_opponents_json:
{"River": [{"rank": "A", "suit": "diamonds"}, {"rank": "10", "suit": "spades"}, {"rank": "A", "suit": "hearts"}], "Maya": [{"rank": "8", "suit": "hearts"}, {"rank": "5", "suit": "spades"}], "Kenji": [{"rank": "J", "suit": "diamonds"}, {"rank": "7", "suit": "diamonds"}]}


game_id: 9116ab39-6bda-47b0-ba9a-a7b392aeaa1b
timestamp: 2026-01-25 00:08:51.354118
player_id: cpu_2
player_name: Maya
action: take_discard
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}]

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


game_id: 9116ab39-6bda-47b0-ba9a-a7b392aeaa1b
timestamp: 2026-01-25 00:08:51.360013
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: swapped 6 for 8 at pos 2
hand_json:
[{"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}]

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


game_id: 9116ab39-6bda-47b0-ba9a-a7b392aeaa1b
timestamp: 2026-01-25 00:08:51.365726
player_id: cpu_3
player_name: Kenji
action: take_discard
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: took 8 from discard
hand_json:
[{"rank": "J", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}]

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


game_id: 9116ab39-6bda-47b0-ba9a-a7b392aeaa1b
timestamp: 2026-01-25 00:08:51.371297
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: swapped 8 for J at pos 0
hand_json:
[{"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}]

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


game_id: 9116ab39-6bda-47b0-ba9a-a7b392aeaa1b
timestamp: 2026-01-25 00:08:51.376909
player_id: cpu_0
player_name: River
action: draw_deck
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 9116ab39-6bda-47b0-ba9a-a7b392aeaa1b
timestamp: 2026-01-25 00:08:51.382764
player_id: cpu_0
player_name: River
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: swapped 4 for 10 at pos 4
hand_json:
[{"rank": "6", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 9116ab39-6bda-47b0-ba9a-a7b392aeaa1b
timestamp: 2026-01-25 00:08:51.388331
player_id: cpu_1
player_name: Marcus
action: draw_deck
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}]

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


game_id: 9116ab39-6bda-47b0-ba9a-a7b392aeaa1b
timestamp: 2026-01-25 00:08:51.399794
player_id: cpu_2
player_name: Maya
action: take_discard
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}]

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


game_id: 9116ab39-6bda-47b0-ba9a-a7b392aeaa1b
timestamp: 2026-01-25 00:08:51.405671
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: swapped 6 for J at pos 5
hand_json:
[{"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}]

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


game_id: 9116ab39-6bda-47b0-ba9a-a7b392aeaa1b
timestamp: 2026-01-25 00:08:51.411725
player_id: cpu_3
player_name: Kenji
action: draw_deck
card_rank: J
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}]

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


game_id: 9116ab39-6bda-47b0-ba9a-a7b392aeaa1b
timestamp: 2026-01-25 00:08:51.423233
player_id: cpu_0
player_name: River
action: draw_deck
card_rank: 9
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 9116ab39-6bda-47b0-ba9a-a7b392aeaa1b
timestamp: 2026-01-25 00:08:51.434388
player_id: cpu_1
player_name: Marcus
action: draw_deck
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"River": [{"rank": "A", "suit": "diamonds"}, {"rank": "4", "suit": "hearts"}, {"rank": "A", "suit": "hearts"}], "Maya": [{"rank": "6", "suit": "diamonds"}, {"rank": "5", "suit": "spades"}, {"rank": "6", "suit": "hearts"}], "Kenji": [{"rank": "8", "suit": "hearts"}, {"rank": "7", "suit": "diamonds"}]}


game_id: 9116ab39-6bda-47b0-ba9a-a7b392aeaa1b
timestamp: 2026-01-25 00:08:51.440146
player_id: cpu_1
player_name: Marcus
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "2", "suit": "spades"}
decision_reason: swapped 4 for 2 at pos 4
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}]

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


game_id: 9116ab39-6bda-47b0-ba9a-a7b392aeaa1b
timestamp: 2026-01-25 00:08:51.445776
player_id: cpu_2
player_name: Maya
action: take_discard
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: took 2 from discard
hand_json:
[{"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}]

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


game_id: 9116ab39-6bda-47b0-ba9a-a7b392aeaa1b
timestamp: 2026-01-25 00:08:51.451008
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped 2 for 6 at pos 2
hand_json:
[{"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}]

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


game_id: 9116ab39-6bda-47b0-ba9a-a7b392aeaa1b
timestamp: 2026-01-25 00:08:51.456570
player_id: cpu_3
player_name: Kenji
action: take_discard
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: took 6 from discard
visible_opponents_json:
{"River": [{"rank": "A", "suit": "diamonds"}, {"rank": "4", "suit": "hearts"}, {"rank": "A", "suit": "hearts"}], "Marcus": [{"rank": "A", "suit": "clubs"}, {"rank": "3", "suit": "clubs"}, {"rank": "4", "suit": "clubs"}], "Maya": [{"rank": "2", "suit": "spades"}, {"rank": "5", "suit": "spades"}, {"rank": "6", "suit": "hearts"}]}


game_id: 9116ab39-6bda-47b0-ba9a-a7b392aeaa1b
timestamp: 2026-01-25 00:08:51.462168
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: swapped 6 for 8 at pos 0
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}]

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


game_id: 9116ab39-6bda-47b0-ba9a-a7b392aeaa1b
timestamp: 2026-01-25 00:08:51.467728
player_id: cpu_0
player_name: River
action: draw_deck
card_rank: A
card_suit: spades
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Marcus": [{"rank": "A", "suit": "clubs"}, {"rank": "3", "suit": "clubs"}, {"rank": "4", "suit": "clubs"}], "Maya": [{"rank": "2", "suit": "spades"}, {"rank": "5", "suit": "spades"}, {"rank": "6", "suit": "hearts"}], "Kenji": [{"rank": "6", "suit": "diamonds"}, {"rank": "7", "suit": "diamonds"}]}


game_id: 9116ab39-6bda-47b0-ba9a-a7b392aeaa1b
timestamp: 2026-01-25 00:08:51.473728
player_id: cpu_0
player_name: River
action: swap
card_rank: A
card_suit: spades
discard_top_json: {"rank": "K", "suit": "clubs"}
decision_reason: swapped A for K at pos 2
hand_json:
[{"rank": "6", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 9116ab39-6bda-47b0-ba9a-a7b392aeaa1b
timestamp: 2026-01-25 00:08:51.479558
player_id: cpu_1
player_name: Marcus
action: take_discard
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: took K from discard
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}]

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


game_id: 9116ab39-6bda-47b0-ba9a-a7b392aeaa1b
timestamp: 2026-01-25 00:08:51.485204
player_id: cpu_1
player_name: Marcus
action: swap
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: swapped K for 4 at pos 4
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}]

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


game_id: 9116ab39-6bda-47b0-ba9a-a7b392aeaa1b
timestamp: 2026-01-25 00:08:51.491424
player_id: cpu_2
player_name: Maya
action: take_discard
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}]

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


game_id: 9116ab39-6bda-47b0-ba9a-a7b392aeaa1b
timestamp: 2026-01-25 00:08:51.497021
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped 4 for 6 at pos 5
hand_json:
[{"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 9116ab39-6bda-47b0-ba9a-a7b392aeaa1b
timestamp: 2026-01-25 00:08:51.503096
player_id: cpu_3
player_name: Kenji
action: take_discard
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}]

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


game_id: 9116ab39-6bda-47b0-ba9a-a7b392aeaa1b
timestamp: 2026-01-25 00:08:51.508658
player_id: cpu_3
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": "6", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}]

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


game_id: 9116ab39-6bda-47b0-ba9a-a7b392aeaa1b
timestamp: 2026-01-25 00:08:51.514182
player_id: cpu_0
player_name: River
action: draw_deck
card_rank: Q
card_suit: spades
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 9116ab39-6bda-47b0-ba9a-a7b392aeaa1b
timestamp: 2026-01-25 00:08:51.525396
player_id: cpu_1
player_name: Marcus
action: draw_deck
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}]

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


game_id: 9116ab39-6bda-47b0-ba9a-a7b392aeaa1b
timestamp: 2026-01-25 00:08:51.531023
player_id: cpu_1
player_name: Marcus
action: swap
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "3", "suit": "hearts"}
decision_reason: swapped 4 for 3 at pos 0
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}]

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


game_id: 9116ab39-6bda-47b0-ba9a-a7b392aeaa1b
timestamp: 2026-01-25 00:08:51.536991
player_id: cpu_2
player_name: Maya
action: take_discard
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 9116ab39-6bda-47b0-ba9a-a7b392aeaa1b
timestamp: 2026-01-25 00:08:51.543090
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped 3 for 5 at pos 4
hand_json:
[{"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 9116ab39-6bda-47b0-ba9a-a7b392aeaa1b
timestamp: 2026-01-25 00:08:51.549333
player_id: cpu_3
player_name: Kenji
action: take_discard
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}]

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


game_id: 9116ab39-6bda-47b0-ba9a-a7b392aeaa1b
timestamp: 2026-01-25 00:08:51.555542
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 5 for 7 at pos 4
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}]

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


game_id: 9116ab39-6bda-47b0-ba9a-a7b392aeaa1b
timestamp: 2026-01-25 00:08:51.561501
player_id: cpu_0
player_name: River
action: take_discard
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took 7 from discard
visible_opponents_json:
{"Marcus": [{"rank": "4", "suit": "spades"}, {"rank": "A", "suit": "clubs"}, {"rank": "3", "suit": "clubs"}, {"rank": "K", "suit": "clubs"}], "Maya": [{"rank": "2", "suit": "spades"}, {"rank": "3", "suit": "hearts"}, {"rank": "4", "suit": "clubs"}], "Kenji": [{"rank": "6", "suit": "diamonds"}, {"rank": "6", "suit": "hearts"}, {"rank": "5", "suit": "spades"}]}


game_id: 9116ab39-6bda-47b0-ba9a-a7b392aeaa1b
timestamp: 2026-01-25 00:08:51.567612
player_id: cpu_0
player_name: River
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped 7 for 6 at pos 0
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 9116ab39-6bda-47b0-ba9a-a7b392aeaa1b
timestamp: 2026-01-25 00:08:51.573465
player_id: cpu_1
player_name: Marcus
action: take_discard
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}]

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


game_id: 9116ab39-6bda-47b0-ba9a-a7b392aeaa1b
timestamp: 2026-01-25 00:08:51.579249
player_id: cpu_1
player_name: Marcus
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "K", "suit": "hearts"}
decision_reason: swapped 6 for K at pos 2
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}]

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


game_id: 9116ab39-6bda-47b0-ba9a-a7b392aeaa1b
timestamp: 2026-01-25 00:08:51.585315
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "K", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 9116ab39-6bda-47b0-ba9a-a7b392aeaa1b
timestamp: 2026-01-25 00:08:51.591066
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "2", "suit": "hearts"}
decision_reason: swapped 3 for 2 at pos 1
hand_json:
[{"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 9116ab39-6bda-47b0-ba9a-a7b392aeaa1b
timestamp: 2026-01-25 00:08:51.596645
player_id: cpu_3
player_name: Kenji
action: take_discard
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "K", "suit": "hearts"}
decision_reason: took 2 from discard
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}]

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


game_id: 9116ab39-6bda-47b0-ba9a-a7b392aeaa1b
timestamp: 2026-01-25 00:08:51.602251
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped 2 for 6 at pos 0
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}]

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


game_id: 9116ab39-6bda-47b0-ba9a-a7b392aeaa1b
timestamp: 2026-01-25 00:08:51.607812
player_id: cpu_0
player_name: River
action: take_discard
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "K", "suit": "hearts"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 9116ab39-6bda-47b0-ba9a-a7b392aeaa1b
timestamp: 2026-01-25 00:08:51.613860
player_id: cpu_0
player_name: River
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 6 for 7 at pos 0
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 9116ab39-6bda-47b0-ba9a-a7b392aeaa1b
timestamp: 2026-01-25 00:08:51.619799
player_id: cpu_1
player_name: Marcus
action: take_discard
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "K", "suit": "hearts"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}]

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


game_id: 9116ab39-6bda-47b0-ba9a-a7b392aeaa1b
timestamp: 2026-01-25 00:08:51.625933
player_id: cpu_1
player_name: Marcus
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped 7 for 7 at pos 5
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}]

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


game_id: 9116ab39-6bda-47b0-ba9a-a7b392aeaa1b
timestamp: 2026-01-25 00:08:51.632408
player_id: cpu_2
player_name: Maya
action: take_discard
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "K", "suit": "hearts"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 9116ab39-6bda-47b0-ba9a-a7b392aeaa1b
timestamp: 2026-01-25 00:08:51.638859
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: swapped 7 for 10 at pos 0
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 9116ab39-6bda-47b0-ba9a-a7b392aeaa1b
timestamp: 2026-01-25 00:08:51.644811
player_id: cpu_3
player_name: Kenji
action: draw_deck
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}]

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


game_id: 9116ab39-6bda-47b0-ba9a-a7b392aeaa1b
timestamp: 2026-01-25 00:08:51.651190
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped 2 for 6 at pos 3
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}]

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


game_id: 9116ab39-6bda-47b0-ba9a-a7b392aeaa1b
timestamp: 2026-01-25 00:08:51.657240
player_id: cpu_0
player_name: River
action: take_discard
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 9116ab39-6bda-47b0-ba9a-a7b392aeaa1b
timestamp: 2026-01-25 00:08:51.663342
player_id: cpu_0
player_name: River
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: swapped 6 for 10 at pos 3
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 8572703e-8467-4d68-87d3-be06cada22f5
timestamp: 2026-01-25 00:08:51.680104
player_id: cpu_0
player_name: Sofia
action: take_discard
card_rank: K
card_suit: spades
decision_reason: took K from discard
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}]

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


game_id: 8572703e-8467-4d68-87d3-be06cada22f5
timestamp: 2026-01-25 00:08:51.685769
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: K
card_suit: spades
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: swapped K for 4 at pos 3
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}]

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


game_id: 8572703e-8467-4d68-87d3-be06cada22f5
timestamp: 2026-01-25 00:08:51.691594
player_id: cpu_1
player_name: Diego
action: take_discard
card_rank: 4
card_suit: hearts
decision_reason: took 4 from discard
hand_json:
[{"rank": "9", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}]

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


game_id: 8572703e-8467-4d68-87d3-be06cada22f5
timestamp: 2026-01-25 00:08:51.697136
player_id: cpu_1
player_name: Diego
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: swapped 4 for 9 at pos 0
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}]

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


game_id: 8572703e-8467-4d68-87d3-be06cada22f5
timestamp: 2026-01-25 00:08:51.703382
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: 10
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}]

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


game_id: 8572703e-8467-4d68-87d3-be06cada22f5
timestamp: 2026-01-25 00:08:51.715307
player_id: cpu_3
player_name: River
action: take_discard
card_rank: 10
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: took 10 from discard
hand_json:
[{"rank": "10", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}]

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


game_id: 8572703e-8467-4d68-87d3-be06cada22f5
timestamp: 2026-01-25 00:08:51.722801
player_id: cpu_3
player_name: River
action: swap
card_rank: 10
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: swapped 10 for 9 at pos 3
hand_json:
[{"rank": "10", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}]

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


game_id: 8572703e-8467-4d68-87d3-be06cada22f5
timestamp: 2026-01-25 00:08:51.728812
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: 10
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}]

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


game_id: 8572703e-8467-4d68-87d3-be06cada22f5
timestamp: 2026-01-25 00:08:51.740124
player_id: cpu_1
player_name: Diego
action: draw_deck
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}]

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


game_id: 8572703e-8467-4d68-87d3-be06cada22f5
timestamp: 2026-01-25 00:08:51.745813
player_id: cpu_1
player_name: Diego
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: swapped 5 for 9 at pos 1
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}]

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


game_id: 8572703e-8467-4d68-87d3-be06cada22f5
timestamp: 2026-01-25 00:08:51.751713
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: J
card_suit: spades
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}]

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


game_id: 8572703e-8467-4d68-87d3-be06cada22f5
timestamp: 2026-01-25 00:08:51.757167
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: J
card_suit: spades
discard_top_json: {"rank": "2", "suit": "diamonds"}
decision_reason: swapped J for 2 at pos 4
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}]

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


game_id: 8572703e-8467-4d68-87d3-be06cada22f5
timestamp: 2026-01-25 00:08:51.765179
player_id: cpu_3
player_name: River
action: take_discard
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: took 2 from discard
hand_json:
[{"rank": "10", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}]

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


game_id: 8572703e-8467-4d68-87d3-be06cada22f5
timestamp: 2026-01-25 00:08:51.771198
player_id: cpu_3
player_name: River
action: swap
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: swapped 2 for 10 at pos 0
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}]

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


game_id: 8572703e-8467-4d68-87d3-be06cada22f5
timestamp: 2026-01-25 00:08:51.777360
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Diego": [{"rank": "4", "suit": "hearts"}, {"rank": "5", "suit": "hearts"}, {"rank": "5", "suit": "diamonds"}], "Kenji": [{"rank": "5", "suit": "clubs"}, {"rank": "J", "suit": "spades"}, {"rank": "7", "suit": "spades"}], "River": [{"rank": "2", "suit": "diamonds"}, {"rank": "10", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}]}


game_id: 8572703e-8467-4d68-87d3-be06cada22f5
timestamp: 2026-01-25 00:08:51.782966
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 2 for 7 at pos 4
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}]

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


game_id: 8572703e-8467-4d68-87d3-be06cada22f5
timestamp: 2026-01-25 00:08:51.789063
player_id: cpu_1
player_name: Diego
action: take_discard
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}]

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


game_id: 8572703e-8467-4d68-87d3-be06cada22f5
timestamp: 2026-01-25 00:08:51.794926
player_id: cpu_1
player_name: Diego
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: swapped 7 for J at pos 5
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}]

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


game_id: 8572703e-8467-4d68-87d3-be06cada22f5
timestamp: 2026-01-25 00:08:51.801305
player_id: cpu_2
player_name: Kenji
action: take_discard
card_rank: J
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: took J from discard
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}]

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


game_id: 8572703e-8467-4d68-87d3-be06cada22f5
timestamp: 2026-01-25 00:08:51.807192
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: J
card_suit: diamonds
discard_top_json: {"rank": "3", "suit": "diamonds"}
decision_reason: swapped J for 3 at pos 1
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}]

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


game_id: 8572703e-8467-4d68-87d3-be06cada22f5
timestamp: 2026-01-25 00:08:51.812956
player_id: cpu_3
player_name: River
action: take_discard
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}]

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


game_id: 8572703e-8467-4d68-87d3-be06cada22f5
timestamp: 2026-01-25 00:08:51.818754
player_id: cpu_3
player_name: River
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: swapped 3 for 10 at pos 3
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}]

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


game_id: 8572703e-8467-4d68-87d3-be06cada22f5
timestamp: 2026-01-25 00:08:51.824545
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: Q
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}]

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


game_id: 8572703e-8467-4d68-87d3-be06cada22f5
timestamp: 2026-01-25 00:08:51.836082
player_id: cpu_1
player_name: Diego
action: draw_deck
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}]

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


game_id: 8572703e-8467-4d68-87d3-be06cada22f5
timestamp: 2026-01-25 00:08:51.841800
player_id: cpu_1
player_name: Diego
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 6 for 7 at pos 5
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}]

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


game_id: 8572703e-8467-4d68-87d3-be06cada22f5
timestamp: 2026-01-25 00:08:51.847367
player_id: cpu_2
player_name: Kenji
action: take_discard
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}]

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


game_id: 8572703e-8467-4d68-87d3-be06cada22f5
timestamp: 2026-01-25 00:08:51.853154
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: swapped 7 for 8 at pos 2
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}]

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


game_id: 8572703e-8467-4d68-87d3-be06cada22f5
timestamp: 2026-01-25 00:08:51.859240
player_id: cpu_3
player_name: River
action: draw_deck
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}]

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


game_id: 8572703e-8467-4d68-87d3-be06cada22f5
timestamp: 2026-01-25 00:08:51.865685
player_id: cpu_3
player_name: River
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: swapped 3 for 4 at pos 5
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 8572703e-8467-4d68-87d3-be06cada22f5
timestamp: 2026-01-25 00:08:51.871811
player_id: cpu_0
player_name: Sofia
action: take_discard
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: took 4 from discard
visible_opponents_json:
{"Diego": [{"rank": "4", "suit": "hearts"}, {"rank": "5", "suit": "hearts"}, {"rank": "5", "suit": "diamonds"}, {"rank": "6", "suit": "hearts"}], "Kenji": [{"rank": "5", "suit": "clubs"}, {"rank": "J", "suit": "diamonds"}, {"rank": "7", "suit": "diamonds"}, {"rank": "J", "suit": "spades"}, {"rank": "7", "suit": "spades"}], "River": [{"rank": "2", "suit": "diamonds"}, {"rank": "3", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}]}


game_id: 8572703e-8467-4d68-87d3-be06cada22f5
timestamp: 2026-01-25 00:08:51.877350
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: swapped 4 for J at pos 1
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}]

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


game_id: 8572703e-8467-4d68-87d3-be06cada22f5
timestamp: 2026-01-25 00:08:51.883267
player_id: cpu_1
player_name: Diego
action: draw_deck
card_rank: Q
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}]

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


game_id: 8572703e-8467-4d68-87d3-be06cada22f5
timestamp: 2026-01-25 00:08:51.894782
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: 8
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}]

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


game_id: 8572703e-8467-4d68-87d3-be06cada22f5
timestamp: 2026-01-25 00:08:51.900418
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 8
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: swapped 8 for J at pos 1
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}]

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


game_id: 8572703e-8467-4d68-87d3-be06cada22f5
timestamp: 2026-01-25 00:08:51.906465
player_id: cpu_3
player_name: River
action: draw_deck
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 8572703e-8467-4d68-87d3-be06cada22f5
timestamp: 2026-01-25 00:08:51.912423
player_id: cpu_3
player_name: River
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: swapped 6 for 8 at pos 2
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 8572703e-8467-4d68-87d3-be06cada22f5
timestamp: 2026-01-25 00:08:51.918574
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}]

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


game_id: 8572703e-8467-4d68-87d3-be06cada22f5
timestamp: 2026-01-25 00:08:51.924837
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: swapped A for 4 at pos 1
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}]

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


game_id: 8572703e-8467-4d68-87d3-be06cada22f5
timestamp: 2026-01-25 00:08:51.931110
player_id: cpu_1
player_name: Diego
action: take_discard
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: took 4 from discard
visible_opponents_json:
{"Sofia": [{"rank": "K", "suit": "diamonds"}, {"rank": "A", "suit": "hearts"}, {"rank": "K", "suit": "spades"}, {"rank": "2", "suit": "clubs"}, {"rank": "2", "suit": "spades"}], "Kenji": [{"rank": "5", "suit": "clubs"}, {"rank": "8", "suit": "diamonds"}, {"rank": "7", "suit": "diamonds"}, {"rank": "J", "suit": "spades"}, {"rank": "7", "suit": "spades"}], "River": [{"rank": "2", "suit": "diamonds"}, {"rank": "6", "suit": "clubs"}, {"rank": "3", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}]}


game_id: 8572703e-8467-4d68-87d3-be06cada22f5
timestamp: 2026-01-25 00:08:51.937169
player_id: cpu_1
player_name: Diego
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: swapped 4 for 8 at pos 3
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}]

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


game_id: 8572703e-8467-4d68-87d3-be06cada22f5
timestamp: 2026-01-25 00:08:51.943707
player_id: cpu_2
player_name: Kenji
action: take_discard
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: took 8 from discard
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}]

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


game_id: 8572703e-8467-4d68-87d3-be06cada22f5
timestamp: 2026-01-25 00:08:51.949788
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped 8 for 6 at pos 3
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}]

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


game_id: 8572703e-8467-4d68-87d3-be06cada22f5
timestamp: 2026-01-25 00:08:51.955984
player_id: cpu_3
player_name: River
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": "2", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 8572703e-8467-4d68-87d3-be06cada22f5
timestamp: 2026-01-25 00:08:51.961787
player_id: cpu_3
player_name: River
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped 6 for 6 at pos 1
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 8572703e-8467-4d68-87d3-be06cada22f5
timestamp: 2026-01-25 00:08:51.967257
player_id: cpu_0
player_name: Sofia
action: take_discard
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}]

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


game_id: 8572703e-8467-4d68-87d3-be06cada22f5
timestamp: 2026-01-25 00:08:51.973139
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: swapped 6 for J at pos 2
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}]

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


game_id: 8572703e-8467-4d68-87d3-be06cada22f5
timestamp: 2026-01-25 00:08:51.978790
player_id: cpu_1
player_name: Diego
action: draw_deck
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}]

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


game_id: 8572703e-8467-4d68-87d3-be06cada22f5
timestamp: 2026-01-25 00:08:51.984497
player_id: cpu_1
player_name: Diego
action: swap
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped A for 6 at pos 5
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: 7d7299d9-0071-4574-bcd8-97388d1ee097
timestamp: 2026-01-25 00:08:52.001471
player_id: cpu_0
player_name: Kenji
action: take_discard
card_rank: 6
card_suit: spades
decision_reason: took 6 from discard
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}]

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


game_id: 7d7299d9-0071-4574-bcd8-97388d1ee097
timestamp: 2026-01-25 00:08:52.007180
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: swapped 6 for 8 at pos 3
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}]

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


game_id: 7d7299d9-0071-4574-bcd8-97388d1ee097
timestamp: 2026-01-25 00:08:52.013107
player_id: cpu_1
player_name: Diego
action: take_discard
card_rank: 8
card_suit: clubs
decision_reason: took 8 from discard
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}]

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


game_id: 7d7299d9-0071-4574-bcd8-97388d1ee097
timestamp: 2026-01-25 00:08:52.018645
player_id: cpu_1
player_name: Diego
action: swap
card_rank: 8
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: swapped 8 for 9 at pos 2
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}]

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


game_id: 7d7299d9-0071-4574-bcd8-97388d1ee097
timestamp: 2026-01-25 00:08:52.024527
player_id: cpu_2
player_name: River
action: draw_deck
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}]

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


game_id: 7d7299d9-0071-4574-bcd8-97388d1ee097
timestamp: 2026-01-25 00:08:52.030171
player_id: cpu_2
player_name: River
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: swapped 7 for 10 at pos 2
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}]

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


game_id: 7d7299d9-0071-4574-bcd8-97388d1ee097
timestamp: 2026-01-25 00:08:52.036130
player_id: cpu_3
player_name: Sofia
action: draw_deck
card_rank: J
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}]

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


game_id: 7d7299d9-0071-4574-bcd8-97388d1ee097
timestamp: 2026-01-25 00:08:52.047277
player_id: cpu_0
player_name: Kenji
action: draw_deck
card_rank: J
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}]

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


game_id: 7d7299d9-0071-4574-bcd8-97388d1ee097
timestamp: 2026-01-25 00:08:52.058622
player_id: cpu_1
player_name: Diego
action: draw_deck
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}]

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


game_id: 7d7299d9-0071-4574-bcd8-97388d1ee097
timestamp: 2026-01-25 00:08:52.064604
player_id: cpu_1
player_name: Diego
action: swap
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: swapped A for 8 at pos 2
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}]

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


game_id: 7d7299d9-0071-4574-bcd8-97388d1ee097
timestamp: 2026-01-25 00:08:52.071645
player_id: cpu_2
player_name: River
action: take_discard
card_rank: 8
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: took 8 from discard
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}]

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


game_id: 7d7299d9-0071-4574-bcd8-97388d1ee097
timestamp: 2026-01-25 00:08:52.077628
player_id: cpu_2
player_name: River
action: swap
card_rank: 8
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: swapped 8 for J at pos 3
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}]

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


game_id: 7d7299d9-0071-4574-bcd8-97388d1ee097
timestamp: 2026-01-25 00:08:52.083328
player_id: cpu_3
player_name: Sofia
action: draw_deck
card_rank: 8
card_suit: spades
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}]

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


game_id: 7d7299d9-0071-4574-bcd8-97388d1ee097
timestamp: 2026-01-25 00:08:52.094772
player_id: cpu_0
player_name: Kenji
action: draw_deck
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Diego": [{"rank": "7", "suit": "clubs"}, {"rank": "A", "suit": "clubs"}, {"rank": "8", "suit": "diamonds"}], "River": [{"rank": "7", "suit": "diamonds"}, {"rank": "8", "suit": "clubs"}], "Sofia": [{"rank": "5", "suit": "hearts"}, {"rank": "9", "suit": "spades"}]}


game_id: 7d7299d9-0071-4574-bcd8-97388d1ee097
timestamp: 2026-01-25 00:08:52.100575
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped K for 6 at pos 3
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}]

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


game_id: 7d7299d9-0071-4574-bcd8-97388d1ee097
timestamp: 2026-01-25 00:08:52.107275
player_id: cpu_1
player_name: Diego
action: take_discard
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}]

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


game_id: 7d7299d9-0071-4574-bcd8-97388d1ee097
timestamp: 2026-01-25 00:08:52.112782
player_id: cpu_1
player_name: Diego
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: swapped 6 for 9 at pos 3
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}]

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


game_id: 7d7299d9-0071-4574-bcd8-97388d1ee097
timestamp: 2026-01-25 00:08:52.118643
player_id: cpu_2
player_name: River
action: draw_deck
card_rank: A
card_suit: spades
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}]

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


game_id: 7d7299d9-0071-4574-bcd8-97388d1ee097
timestamp: 2026-01-25 00:08:52.124174
player_id: cpu_2
player_name: River
action: swap
card_rank: A
card_suit: spades
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: swapped A for 8 at pos 3
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}]

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


game_id: 7d7299d9-0071-4574-bcd8-97388d1ee097
timestamp: 2026-01-25 00:08:52.129941
player_id: cpu_3
player_name: Sofia
action: draw_deck
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Kenji": [{"rank": "2", "suit": "clubs"}, {"rank": "K", "suit": "diamonds"}], "Diego": [{"rank": "7", "suit": "clubs"}, {"rank": "A", "suit": "clubs"}, {"rank": "6", "suit": "spades"}, {"rank": "8", "suit": "diamonds"}], "River": [{"rank": "7", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}]}


game_id: 7d7299d9-0071-4574-bcd8-97388d1ee097
timestamp: 2026-01-25 00:08:52.135813
player_id: cpu_3
player_name: Sofia
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: swapped 6 for 9 at pos 3
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}]

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


game_id: 7d7299d9-0071-4574-bcd8-97388d1ee097
timestamp: 2026-01-25 00:08:52.141680
player_id: cpu_0
player_name: Kenji
action: draw_deck
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}]

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


game_id: 7d7299d9-0071-4574-bcd8-97388d1ee097
timestamp: 2026-01-25 00:08:52.147449
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: swapped 3 for 4 at pos 0
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}]

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


game_id: 7d7299d9-0071-4574-bcd8-97388d1ee097
timestamp: 2026-01-25 00:08:52.153593
player_id: cpu_1
player_name: Diego
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": "7", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}]

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


game_id: 7d7299d9-0071-4574-bcd8-97388d1ee097
timestamp: 2026-01-25 00:08:52.159918
player_id: cpu_1
player_name: Diego
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: swapped 4 for 8 at pos 5
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 7d7299d9-0071-4574-bcd8-97388d1ee097
timestamp: 2026-01-25 00:08:52.165795
player_id: cpu_2
player_name: River
action: draw_deck
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}]

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


game_id: 7d7299d9-0071-4574-bcd8-97388d1ee097
timestamp: 2026-01-25 00:08:52.171551
player_id: cpu_2
player_name: River
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: swapped 7 for Q at pos 5
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}]

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


game_id: 7d7299d9-0071-4574-bcd8-97388d1ee097
timestamp: 2026-01-25 00:08:52.177331
player_id: cpu_3
player_name: Sofia
action: draw_deck
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}]

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


game_id: 7d7299d9-0071-4574-bcd8-97388d1ee097
timestamp: 2026-01-25 00:08:52.182845
player_id: cpu_3
player_name: Sofia
action: swap
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped K for 6 at pos 3
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}]

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


game_id: 7d7299d9-0071-4574-bcd8-97388d1ee097
timestamp: 2026-01-25 00:08:52.188706
player_id: cpu_0
player_name: Kenji
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}]

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


game_id: 7d7299d9-0071-4574-bcd8-97388d1ee097
timestamp: 2026-01-25 00:08:52.194515
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped 6 for 6 at pos 2
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}]

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


game_id: 7d7299d9-0071-4574-bcd8-97388d1ee097
timestamp: 2026-01-25 00:08:52.200405
player_id: cpu_1
player_name: Diego
action: take_discard
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 7d7299d9-0071-4574-bcd8-97388d1ee097
timestamp: 2026-01-25 00:08:52.206291
player_id: cpu_1
player_name: Diego
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped 6 for 7 at pos 0
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 7d7299d9-0071-4574-bcd8-97388d1ee097
timestamp: 2026-01-25 00:08:52.212236
player_id: cpu_2
player_name: River
action: take_discard
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}]

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


game_id: 7d7299d9-0071-4574-bcd8-97388d1ee097
timestamp: 2026-01-25 00:08:52.218217
player_id: cpu_2
player_name: River
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "2", "suit": "spades"}
decision_reason: swapped 7 for 2 at pos 4
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}]

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


game_id: 7d7299d9-0071-4574-bcd8-97388d1ee097
timestamp: 2026-01-25 00:08:52.224209
player_id: cpu_3
player_name: Sofia
action: take_discard
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: took 2 from discard
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}]

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


game_id: 7d7299d9-0071-4574-bcd8-97388d1ee097
timestamp: 2026-01-25 00:08:52.229860
player_id: cpu_3
player_name: Sofia
action: swap
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped 2 for 5 at pos 1
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}]

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


game_id: 7d7299d9-0071-4574-bcd8-97388d1ee097
timestamp: 2026-01-25 00:08:52.235409
player_id: cpu_0
player_name: Kenji
action: take_discard
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}]

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


game_id: 7d7299d9-0071-4574-bcd8-97388d1ee097
timestamp: 2026-01-25 00:08:52.240888
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 5 for 6 at pos 2
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}]

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


game_id: 7d7299d9-0071-4574-bcd8-97388d1ee097
timestamp: 2026-01-25 00:08:52.246572
player_id: cpu_1
player_name: Diego
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 7d7299d9-0071-4574-bcd8-97388d1ee097
timestamp: 2026-01-25 00:08:52.252026
player_id: cpu_1
player_name: Diego
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "K", "suit": "hearts"}
decision_reason: swapped 6 for K at pos 1
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 7d7299d9-0071-4574-bcd8-97388d1ee097
timestamp: 2026-01-25 00:08:52.257759
player_id: cpu_2
player_name: River
action: take_discard
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: took K from discard
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}]

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


game_id: 7d7299d9-0071-4574-bcd8-97388d1ee097
timestamp: 2026-01-25 00:08:52.263141
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 2
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}]

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


game_id: 7d7299d9-0071-4574-bcd8-97388d1ee097
timestamp: 2026-01-25 00:08:52.269091
player_id: cpu_3
player_name: Sofia
action: take_discard
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}]

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


game_id: 7d7299d9-0071-4574-bcd8-97388d1ee097
timestamp: 2026-01-25 00:08:52.275135
player_id: cpu_3
player_name: Sofia
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: swapped 7 for J at pos 5
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}]

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


game_id: 7d7299d9-0071-4574-bcd8-97388d1ee097
timestamp: 2026-01-25 00:08:52.280707
player_id: cpu_0
player_name: Kenji
action: draw_deck
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}]

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


game_id: 7d7299d9-0071-4574-bcd8-97388d1ee097
timestamp: 2026-01-25 00:08:52.286411
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "3", "suit": "clubs"}
decision_reason: swapped 7 for 3 at pos 4
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}]

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


game_id: 7d7299d9-0071-4574-bcd8-97388d1ee097
timestamp: 2026-01-25 00:08:52.292720
player_id: cpu_1
player_name: Diego
action: take_discard
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 7d7299d9-0071-4574-bcd8-97388d1ee097
timestamp: 2026-01-25 00:08:52.298976
player_id: cpu_1
player_name: Diego
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped 3 for 6 at pos 0
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 7d7299d9-0071-4574-bcd8-97388d1ee097
timestamp: 2026-01-25 00:08:52.304933
player_id: cpu_2
player_name: River
action: take_discard
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}]

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


game_id: 7d7299d9-0071-4574-bcd8-97388d1ee097
timestamp: 2026-01-25 00:08:52.314630
player_id: cpu_2
player_name: River
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "3", "suit": "diamonds"}
decision_reason: swapped 6 for 3 at pos 0
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}]

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


game_id: 7d7299d9-0071-4574-bcd8-97388d1ee097
timestamp: 2026-01-25 00:08:52.320928
player_id: cpu_3
player_name: Sofia
action: take_discard
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}]

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


game_id: 7d7299d9-0071-4574-bcd8-97388d1ee097
timestamp: 2026-01-25 00:08:52.326975
player_id: cpu_3
player_name: Sofia
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 3 for 7 at pos 5
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: 7d7299d9-0071-4574-bcd8-97388d1ee097
timestamp: 2026-01-25 00:08:52.333213
player_id: cpu_0
player_name: Kenji
action: take_discard
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}]

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


game_id: 7d7299d9-0071-4574-bcd8-97388d1ee097
timestamp: 2026-01-25 00:08:52.339709
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped 7 for 5 at pos 5
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}]

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


game_id: 7d7299d9-0071-4574-bcd8-97388d1ee097
timestamp: 2026-01-25 00:08:52.345765
player_id: cpu_1
player_name: Diego
action: draw_deck
card_rank: 10
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 7d7299d9-0071-4574-bcd8-97388d1ee097
timestamp: 2026-01-25 00:08:52.351622
player_id: cpu_1
player_name: Diego
action: swap
card_rank: 10
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: swapped 10 for 10 at pos 4
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 7d7299d9-0071-4574-bcd8-97388d1ee097
timestamp: 2026-01-25 00:08:52.357575
player_id: cpu_2
player_name: River
action: draw_deck
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}]

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


game_id: 7d7299d9-0071-4574-bcd8-97388d1ee097
timestamp: 2026-01-25 00:08:52.365973
player_id: cpu_2
player_name: River
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped 5 for 7 at pos 4
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}]

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


game_id: 7d7299d9-0071-4574-bcd8-97388d1ee097
timestamp: 2026-01-25 00:08:52.372111
player_id: cpu_3
player_name: Sofia
action: take_discard
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: 7d7299d9-0071-4574-bcd8-97388d1ee097
timestamp: 2026-01-25 00:08:52.377978
player_id: cpu_3
player_name: Sofia
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "2", "suit": "hearts"}
decision_reason: swapped 7 for 2 at pos 0
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: e244edfa-2007-4df4-8302-f2bf357e0a6a
timestamp: 2026-01-25 00:08:52.395671
player_id: cpu_0
player_name: Marcus
action: take_discard
card_rank: 4
card_suit: hearts
decision_reason: took 4 from discard
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": true}]

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


game_id: e244edfa-2007-4df4-8302-f2bf357e0a6a
timestamp: 2026-01-25 00:08:52.401622
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: swapped 4 for J at pos 5
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: e244edfa-2007-4df4-8302-f2bf357e0a6a
timestamp: 2026-01-25 00:08:52.407670
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: 8
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}]

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


game_id: e244edfa-2007-4df4-8302-f2bf357e0a6a
timestamp: 2026-01-25 00:08:52.419189
player_id: cpu_2
player_name: Diego
action: take_discard
card_rank: 8
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: took 8 from discard
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: e244edfa-2007-4df4-8302-f2bf357e0a6a
timestamp: 2026-01-25 00:08:52.424900
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 8
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: swapped 8 for J at pos 1
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: e244edfa-2007-4df4-8302-f2bf357e0a6a
timestamp: 2026-01-25 00:08:52.430952
player_id: cpu_3
player_name: Priya
action: draw_deck
card_rank: A
card_suit: spades
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}]

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


game_id: e244edfa-2007-4df4-8302-f2bf357e0a6a
timestamp: 2026-01-25 00:08:52.436737
player_id: cpu_3
player_name: Priya
action: swap
card_rank: A
card_suit: spades
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: swapped A for 8 at pos 1
hand_json:
[{"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}]

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


game_id: e244edfa-2007-4df4-8302-f2bf357e0a6a
timestamp: 2026-01-25 00:08:52.442719
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: 10
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: e244edfa-2007-4df4-8302-f2bf357e0a6a
timestamp: 2026-01-25 00:08:52.454700
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}]

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


game_id: e244edfa-2007-4df4-8302-f2bf357e0a6a
timestamp: 2026-01-25 00:08:52.460475
player_id: cpu_1
player_name: Sage
action: swap
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "3", "suit": "diamonds"}
decision_reason: swapped K for 3 at pos 3
hand_json:
[{"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}]

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


game_id: e244edfa-2007-4df4-8302-f2bf357e0a6a
timestamp: 2026-01-25 00:08:52.466473
player_id: cpu_2
player_name: Diego
action: take_discard
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: e244edfa-2007-4df4-8302-f2bf357e0a6a
timestamp: 2026-01-25 00:08:52.472064
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: swapped 3 for 8 at pos 1
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: e244edfa-2007-4df4-8302-f2bf357e0a6a
timestamp: 2026-01-25 00:08:52.478089
player_id: cpu_3
player_name: Priya
action: draw_deck
card_rank: Q
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}]

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


game_id: e244edfa-2007-4df4-8302-f2bf357e0a6a
timestamp: 2026-01-25 00:08:52.489816
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Sage": [{"rank": "K", "suit": "hearts"}, {"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "hearts"}], "Diego": [{"rank": "3", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}], "Priya": [{"rank": "A", "suit": "spades"}, {"rank": "5", "suit": "diamonds"}, {"rank": "A", "suit": "diamonds"}]}


game_id: e244edfa-2007-4df4-8302-f2bf357e0a6a
timestamp: 2026-01-25 00:08:52.497223
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: swapped 3 for 4 at pos 5
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: e244edfa-2007-4df4-8302-f2bf357e0a6a
timestamp: 2026-01-25 00:08:52.503211
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}]

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


game_id: e244edfa-2007-4df4-8302-f2bf357e0a6a
timestamp: 2026-01-25 00:08:52.509630
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "2", "suit": "spades"}
decision_reason: swapped 4 for 2 at pos 1
hand_json:
[{"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}]

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


game_id: e244edfa-2007-4df4-8302-f2bf357e0a6a
timestamp: 2026-01-25 00:08:52.515863
player_id: cpu_2
player_name: Diego
action: draw_deck
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "2", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: e244edfa-2007-4df4-8302-f2bf357e0a6a
timestamp: 2026-01-25 00:08:52.522212
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 5 for 7 at pos 4
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: e244edfa-2007-4df4-8302-f2bf357e0a6a
timestamp: 2026-01-25 00:08:52.528446
player_id: cpu_3
player_name: Priya
action: take_discard
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "2", "suit": "spades"}
decision_reason: took 7 from discard
visible_opponents_json:
{"Marcus": [{"rank": "K", "suit": "spades"}, {"rank": "3", "suit": "hearts"}], "Sage": [{"rank": "4", "suit": "hearts"}, {"rank": "K", "suit": "hearts"}, {"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "hearts"}], "Diego": [{"rank": "3", "suit": "diamonds"}, {"rank": "5", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}]}


game_id: e244edfa-2007-4df4-8302-f2bf357e0a6a
timestamp: 2026-01-25 00:08:52.534546
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: swapped 7 for 9 at pos 0
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}]

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


game_id: e244edfa-2007-4df4-8302-f2bf357e0a6a
timestamp: 2026-01-25 00:08:52.540677
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: e244edfa-2007-4df4-8302-f2bf357e0a6a
timestamp: 2026-01-25 00:08:52.546681
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "A", "suit": "clubs"}
decision_reason: swapped 6 for A at pos 2
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: e244edfa-2007-4df4-8302-f2bf357e0a6a
timestamp: 2026-01-25 00:08:52.552617
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: took A from discard
hand_json:
[{"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}]

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


game_id: e244edfa-2007-4df4-8302-f2bf357e0a6a
timestamp: 2026-01-25 00:08:52.558659
player_id: cpu_1
player_name: Sage
action: swap
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: swapped A for 4 at pos 1
hand_json:
[{"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}]

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


game_id: e244edfa-2007-4df4-8302-f2bf357e0a6a
timestamp: 2026-01-25 00:08:52.564619
player_id: cpu_2
player_name: Diego
action: take_discard
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: e244edfa-2007-4df4-8302-f2bf357e0a6a
timestamp: 2026-01-25 00:08:52.570630
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped 4 for 5 at pos 4
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: e244edfa-2007-4df4-8302-f2bf357e0a6a
timestamp: 2026-01-25 00:08:52.576265
player_id: cpu_3
player_name: Priya
action: take_discard
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}]

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


game_id: e244edfa-2007-4df4-8302-f2bf357e0a6a
timestamp: 2026-01-25 00:08:52.582166
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: swapped 5 for Q at pos 5
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: e244edfa-2007-4df4-8302-f2bf357e0a6a
timestamp: 2026-01-25 00:08:52.587881
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: e244edfa-2007-4df4-8302-f2bf357e0a6a
timestamp: 2026-01-25 00:08:52.593807
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped A for 6 at pos 2
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: e244edfa-2007-4df4-8302-f2bf357e0a6a
timestamp: 2026-01-25 00:08:52.600005
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}]

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


game_id: e244edfa-2007-4df4-8302-f2bf357e0a6a
timestamp: 2026-01-25 00:08:52.605689
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: swapped 6 for 10 at pos 5
hand_json:
[{"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}]

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


game_id: e244edfa-2007-4df4-8302-f2bf357e0a6a
timestamp: 2026-01-25 00:08:52.611645
player_id: cpu_2
player_name: Diego
action: draw_deck
card_rank: Q
card_suit: spades
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: e244edfa-2007-4df4-8302-f2bf357e0a6a
timestamp: 2026-01-25 00:08:52.623597
player_id: cpu_3
player_name: Priya
action: draw_deck
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: e244edfa-2007-4df4-8302-f2bf357e0a6a
timestamp: 2026-01-25 00:08:52.629288
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: swapped 7 for 4 at pos 3
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: e244edfa-2007-4df4-8302-f2bf357e0a6a
timestamp: 2026-01-25 00:08:52.635396
player_id: cpu_0
player_name: Marcus
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": "K", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: e244edfa-2007-4df4-8302-f2bf357e0a6a
timestamp: 2026-01-25 00:08:52.645314
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "K", "suit": "diamonds"}
decision_reason: swapped 4 for K at pos 4
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: e244edfa-2007-4df4-8302-f2bf357e0a6a
timestamp: 2026-01-25 00:08:52.654627
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took K from discard
hand_json:
[{"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}]

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


game_id: e244edfa-2007-4df4-8302-f2bf357e0a6a
timestamp: 2026-01-25 00:08:52.662371
player_id: cpu_1
player_name: Sage
action: swap
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped K for 6 at pos 5
hand_json:
[{"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: e244edfa-2007-4df4-8302-f2bf357e0a6a
timestamp: 2026-01-25 00:08:52.668234
player_id: cpu_2
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:
{"Marcus": [{"rank": "K", "suit": "spades"}, {"rank": "A", "suit": "hearts"}, {"rank": "4", "suit": "diamonds"}, {"rank": "3", "suit": "hearts"}], "Sage": [{"rank": "A", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}, {"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "hearts"}, {"rank": "K", "suit": "diamonds"}], "Priya": [{"rank": "7", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}, {"rank": "5", "suit": "diamonds"}, {"rank": "7", "suit": "clubs"}, {"rank": "A", "suit": "diamonds"}, {"rank": "5", "suit": "clubs"}]}


game_id: e244edfa-2007-4df4-8302-f2bf357e0a6a
timestamp: 2026-01-25 00:08:52.674694
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: swapped 6 for 10 at pos 2
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: 703c26b3-5606-46ef-b43b-bb2174baf444
timestamp: 2026-01-25 00:08:52.692839
player_id: cpu_0
player_name: Diego
action: take_discard
card_rank: 2
card_suit: spades
decision_reason: took 2 from discard
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}]

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


game_id: 703c26b3-5606-46ef-b43b-bb2174baf444
timestamp: 2026-01-25 00:08:52.698860
player_id: cpu_0
player_name: Diego
action: swap
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: swapped 2 for J at pos 0
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}]

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


game_id: 703c26b3-5606-46ef-b43b-bb2174baf444
timestamp: 2026-01-25 00:08:52.704791
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: 6
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": "6", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": true}]

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


game_id: 703c26b3-5606-46ef-b43b-bb2174baf444
timestamp: 2026-01-25 00:08:52.710832
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "A", "suit": "hearts"}
decision_reason: swapped 6 for A at pos 2
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": true}]

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


game_id: 703c26b3-5606-46ef-b43b-bb2174baf444
timestamp: 2026-01-25 00:08:52.716899
player_id: cpu_2
player_name: Kenji
action: take_discard
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: took A from discard
hand_json:
[{"rank": "9", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": true}]

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


game_id: 703c26b3-5606-46ef-b43b-bb2174baf444
timestamp: 2026-01-25 00:08:52.723234
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: swapped A for Q at pos 5
hand_json:
[{"rank": "9", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 703c26b3-5606-46ef-b43b-bb2174baf444
timestamp: 2026-01-25 00:08:52.729476
player_id: cpu_3
player_name: Sage
action: draw_deck
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": true}]

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


game_id: 703c26b3-5606-46ef-b43b-bb2174baf444
timestamp: 2026-01-25 00:08:52.735664
player_id: cpu_3
player_name: Sage
action: swap
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: swapped A for Q at pos 4
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": true}]

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


game_id: 703c26b3-5606-46ef-b43b-bb2174baf444
timestamp: 2026-01-25 00:08:52.741805
player_id: cpu_0
player_name: Diego
action: draw_deck
card_rank: 8
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}]

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


game_id: 703c26b3-5606-46ef-b43b-bb2174baf444
timestamp: 2026-01-25 00:08:52.748124
player_id: cpu_0
player_name: Diego
action: swap
card_rank: 8
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped 8 for 6 at pos 2
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}]

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


game_id: 703c26b3-5606-46ef-b43b-bb2174baf444
timestamp: 2026-01-25 00:08:52.754704
player_id: cpu_1
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": "K", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": true}]

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


game_id: 703c26b3-5606-46ef-b43b-bb2174baf444
timestamp: 2026-01-25 00:08:52.761688
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: swapped 6 for 10 at pos 5
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}]

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


game_id: 703c26b3-5606-46ef-b43b-bb2174baf444
timestamp: 2026-01-25 00:08:52.767844
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: 9
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "9", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 703c26b3-5606-46ef-b43b-bb2174baf444
timestamp: 2026-01-25 00:08:52.773908
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 9
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped 9 for 5 at pos 3
hand_json:
[{"rank": "9", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 703c26b3-5606-46ef-b43b-bb2174baf444
timestamp: 2026-01-25 00:08:52.780080
player_id: cpu_3
player_name: Sage
action: take_discard
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": true}]

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


game_id: 703c26b3-5606-46ef-b43b-bb2174baf444
timestamp: 2026-01-25 00:08:52.785818
player_id: cpu_3
player_name: Sage
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: swapped 5 for 8 at pos 5
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}]

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


game_id: 703c26b3-5606-46ef-b43b-bb2174baf444
timestamp: 2026-01-25 00:08:52.791563
player_id: cpu_0
player_name: Diego
action: draw_deck
card_rank: J
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}]

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


game_id: 703c26b3-5606-46ef-b43b-bb2174baf444
timestamp: 2026-01-25 00:08:52.803237
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}]

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


game_id: 703c26b3-5606-46ef-b43b-bb2174baf444
timestamp: 2026-01-25 00:08:52.809360
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 4 for 6 at pos 2
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}]

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


game_id: 703c26b3-5606-46ef-b43b-bb2174baf444
timestamp: 2026-01-25 00:08:52.815274
player_id: cpu_2
player_name: Kenji
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "9", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 703c26b3-5606-46ef-b43b-bb2174baf444
timestamp: 2026-01-25 00:08:52.821199
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: swapped 6 for 9 at pos 0
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 703c26b3-5606-46ef-b43b-bb2174baf444
timestamp: 2026-01-25 00:08:52.827336
player_id: cpu_3
player_name: Sage
action: draw_deck
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}]

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


game_id: 703c26b3-5606-46ef-b43b-bb2174baf444
timestamp: 2026-01-25 00:08:52.840306
player_id: cpu_0
player_name: Diego
action: draw_deck
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Maya": [{"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "spades"}, {"rank": "6", "suit": "hearts"}], "Kenji": [{"rank": "6", "suit": "clubs"}, {"rank": "9", "suit": "hearts"}, {"rank": "A", "suit": "hearts"}], "Sage": [{"rank": "A", "suit": "spades"}, {"rank": "A", "suit": "diamonds"}, {"rank": "5", "suit": "diamonds"}]}


game_id: 703c26b3-5606-46ef-b43b-bb2174baf444
timestamp: 2026-01-25 00:08:52.846894
player_id: cpu_0
player_name: Diego
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: swapped 6 for 8 at pos 2
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}]

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


game_id: 703c26b3-5606-46ef-b43b-bb2174baf444
timestamp: 2026-01-25 00:08:52.853070
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}]

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


game_id: 703c26b3-5606-46ef-b43b-bb2174baf444
timestamp: 2026-01-25 00:08:52.865510
player_id: cpu_2
player_name: Kenji
action: take_discard
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 703c26b3-5606-46ef-b43b-bb2174baf444
timestamp: 2026-01-25 00:08:52.871861
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: swapped 7 for 9 at pos 3
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 703c26b3-5606-46ef-b43b-bb2174baf444
timestamp: 2026-01-25 00:08:52.878329
player_id: cpu_3
player_name: Sage
action: draw_deck
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Diego": [{"rank": "2", "suit": "spades"}, {"rank": "6", "suit": "diamonds"}, {"rank": "8", "suit": "diamonds"}], "Maya": [{"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "spades"}, {"rank": "6", "suit": "hearts"}], "Kenji": [{"rank": "6", "suit": "clubs"}, {"rank": "7", "suit": "diamonds"}, {"rank": "A", "suit": "hearts"}]}


game_id: 703c26b3-5606-46ef-b43b-bb2174baf444
timestamp: 2026-01-25 00:08:52.884484
player_id: cpu_3
player_name: Sage
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: swapped 5 for 4 at pos 2
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}]

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


game_id: 703c26b3-5606-46ef-b43b-bb2174baf444
timestamp: 2026-01-25 00:08:52.890848
player_id: cpu_0
player_name: Diego
action: take_discard
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}]

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


game_id: 703c26b3-5606-46ef-b43b-bb2174baf444
timestamp: 2026-01-25 00:08:52.897135
player_id: cpu_0
player_name: Diego
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: swapped 4 for 8 at pos 5
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}]

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


game_id: 703c26b3-5606-46ef-b43b-bb2174baf444
timestamp: 2026-01-25 00:08:52.905908
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Diego": [{"rank": "2", "suit": "spades"}, {"rank": "6", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}], "Kenji": [{"rank": "6", "suit": "clubs"}, {"rank": "7", "suit": "diamonds"}, {"rank": "A", "suit": "hearts"}], "Sage": [{"rank": "A", "suit": "spades"}, {"rank": "5", "suit": "clubs"}, {"rank": "A", "suit": "diamonds"}, {"rank": "5", "suit": "diamonds"}]}


game_id: 703c26b3-5606-46ef-b43b-bb2174baf444
timestamp: 2026-01-25 00:08:52.912145
player_id: cpu_1
player_name: Maya
action: swap
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped K for 6 at pos 5
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: 703c26b3-5606-46ef-b43b-bb2174baf444
timestamp: 2026-01-25 00:08:52.918017
player_id: cpu_2
player_name: Kenji
action: take_discard
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 703c26b3-5606-46ef-b43b-bb2174baf444
timestamp: 2026-01-25 00:08:52.924556
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 6 for 7 at pos 3
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 703c26b3-5606-46ef-b43b-bb2174baf444
timestamp: 2026-01-25 00:08:52.931236
player_id: cpu_3
player_name: Sage
action: draw_deck
card_rank: 10
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}]

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


game_id: 703c26b3-5606-46ef-b43b-bb2174baf444
timestamp: 2026-01-25 00:08:52.943167
player_id: cpu_0
player_name: Diego
action: draw_deck
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}]

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


game_id: 703c26b3-5606-46ef-b43b-bb2174baf444
timestamp: 2026-01-25 00:08:52.948795
player_id: cpu_0
player_name: Diego
action: swap
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped 2 for 6 at pos 2
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}]

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


game_id: 703c26b3-5606-46ef-b43b-bb2174baf444
timestamp: 2026-01-25 00:08:52.954946
player_id: cpu_1
player_name: Maya
action: take_discard
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: 703c26b3-5606-46ef-b43b-bb2174baf444
timestamp: 2026-01-25 00:08:52.961082
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: swapped 6 for 10 at pos 4
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: 703c26b3-5606-46ef-b43b-bb2174baf444
timestamp: 2026-01-25 00:08:52.967197
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 703c26b3-5606-46ef-b43b-bb2174baf444
timestamp: 2026-01-25 00:08:52.973204
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 2 for 6 at pos 0
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 703c26b3-5606-46ef-b43b-bb2174baf444
timestamp: 2026-01-25 00:08:52.979059
player_id: cpu_3
player_name: Sage
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: took 6 from discard
visible_opponents_json:
{"Diego": [{"rank": "2", "suit": "spades"}, {"rank": "2", "suit": "hearts"}, {"rank": "4", "suit": "diamonds"}], "Maya": [{"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "spades"}, {"rank": "6", "suit": "diamonds"}, {"rank": "K", "suit": "clubs"}], "Kenji": [{"rank": "2", "suit": "diamonds"}, {"rank": "6", "suit": "hearts"}, {"rank": "A", "suit": "hearts"}]}


game_id: 703c26b3-5606-46ef-b43b-bb2174baf444
timestamp: 2026-01-25 00:08:52.985143
player_id: cpu_3
player_name: Sage
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "3", "suit": "hearts"}
decision_reason: swapped 6 for 3 at pos 0
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}]

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


game_id: 703c26b3-5606-46ef-b43b-bb2174baf444
timestamp: 2026-01-25 00:08:52.991399
player_id: cpu_0
player_name: Diego
action: take_discard
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}]

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


game_id: 703c26b3-5606-46ef-b43b-bb2174baf444
timestamp: 2026-01-25 00:08:52.997540
player_id: cpu_0
player_name: Diego
action: swap
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: swapped 3 for 4 at pos 5
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: 703c26b3-5606-46ef-b43b-bb2174baf444
timestamp: 2026-01-25 00:08:53.003773
player_id: cpu_1
player_name: Maya
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": "K", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: 703c26b3-5606-46ef-b43b-bb2174baf444
timestamp: 2026-01-25 00:08:53.009891
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped 4 for 6 at pos 4
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: 703c26b3-5606-46ef-b43b-bb2174baf444
timestamp: 2026-01-25 00:08:53.015848
player_id: cpu_2
player_name: Kenji
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": "2", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 703c26b3-5606-46ef-b43b-bb2174baf444
timestamp: 2026-01-25 00:08:53.021706
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "3", "suit": "diamonds"}
decision_reason: swapped 6 for 3 at pos 4
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 703c26b3-5606-46ef-b43b-bb2174baf444
timestamp: 2026-01-25 00:08:53.027483
player_id: cpu_3
player_name: Sage
action: take_discard
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}]

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


game_id: 703c26b3-5606-46ef-b43b-bb2174baf444
timestamp: 2026-01-25 00:08:53.033774
player_id: cpu_3
player_name: Sage
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 3 for 6 at pos 0
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}]

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


game_id: 703c26b3-5606-46ef-b43b-bb2174baf444
timestamp: 2026-01-25 00:08:53.040369
player_id: cpu_0
player_name: Diego
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: 703c26b3-5606-46ef-b43b-bb2174baf444
timestamp: 2026-01-25 00:08:53.046492
player_id: cpu_0
player_name: Diego
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: swapped 6 for Q at pos 3
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: 703c26b3-5606-46ef-b43b-bb2174baf444
timestamp: 2026-01-25 00:08:53.052623
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: 703c26b3-5606-46ef-b43b-bb2174baf444
timestamp: 2026-01-25 00:08:53.058969
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped 7 for 6 at pos 1
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: 703c26b3-5606-46ef-b43b-bb2174baf444
timestamp: 2026-01-25 00:08:53.065506
player_id: cpu_2
player_name: Kenji
action: take_discard
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 703c26b3-5606-46ef-b43b-bb2174baf444
timestamp: 2026-01-25 00:08:53.071384
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: swapped 6 for 4 at pos 1
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 703c26b3-5606-46ef-b43b-bb2174baf444
timestamp: 2026-01-25 00:08:53.077630
player_id: cpu_3
player_name: Sage
action: draw_deck
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}]

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


game_id: 703c26b3-5606-46ef-b43b-bb2174baf444
timestamp: 2026-01-25 00:08:53.083945
player_id: cpu_3
player_name: Sage
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "K", "suit": "diamonds"}
decision_reason: swapped 7 for K at pos 3
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}]

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


game_id: 703c26b3-5606-46ef-b43b-bb2174baf444
timestamp: 2026-01-25 00:08:53.090152
player_id: cpu_0
player_name: Diego
action: take_discard
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: took K from discard
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: 703c26b3-5606-46ef-b43b-bb2174baf444
timestamp: 2026-01-25 00:08:53.096154
player_id: cpu_0
player_name: Diego
action: swap
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped K for 6 at pos 3
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: 703c26b3-5606-46ef-b43b-bb2174baf444
timestamp: 2026-01-25 00:08:53.102460
player_id: cpu_1
player_name: Maya
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: 703c26b3-5606-46ef-b43b-bb2174baf444
timestamp: 2026-01-25 00:08:53.108531
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped 6 for 7 at pos 1
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: 703c26b3-5606-46ef-b43b-bb2174baf444
timestamp: 2026-01-25 00:08:53.114530
player_id: cpu_2
player_name: Kenji
action: take_discard
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 703c26b3-5606-46ef-b43b-bb2174baf444
timestamp: 2026-01-25 00:08:53.120867
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: swapped 7 for J at pos 2
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 89987441-542f-4922-ad0d-f81eff3984d0
timestamp: 2026-01-25 00:08:53.138120
player_id: cpu_0
player_name: Sage
action: take_discard
card_rank: J
card_suit: spades
decision_reason: took J from discard
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}]

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


game_id: 89987441-542f-4922-ad0d-f81eff3984d0
timestamp: 2026-01-25 00:08:53.144211
player_id: cpu_0
player_name: Sage
action: swap
card_rank: J
card_suit: spades
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped J for 5 at pos 3
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}]

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


game_id: 89987441-542f-4922-ad0d-f81eff3984d0
timestamp: 2026-01-25 00:08:53.150787
player_id: cpu_1
player_name: Marcus
action: take_discard
card_rank: 5
card_suit: diamonds
decision_reason: took 5 from discard
hand_json:
[{"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}]

visible_opponents_json:
{"Sage": [{"rank": "J", "suit": "hearts"}, {"rank": "J", "suit": "spades"}, {"rank": "7", "suit": "diamonds"}], "Priya": [{"rank": "2", "suit": "spades"}, {"rank": "3", "suit": "diamonds"}], "Kenji": [{"rank": "2", "suit": "clubs"}, {"rank": "Q", "suit": "hearts"}]}


game_id: 89987441-542f-4922-ad0d-f81eff3984d0
timestamp: 2026-01-25 00:08:53.156399
player_id: cpu_1
player_name: Marcus
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped 5 for 6 at pos 3
hand_json:
[{"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}]

visible_opponents_json:
{"Sage": [{"rank": "J", "suit": "hearts"}, {"rank": "J", "suit": "spades"}, {"rank": "7", "suit": "diamonds"}], "Priya": [{"rank": "2", "suit": "spades"}, {"rank": "3", "suit": "diamonds"}], "Kenji": [{"rank": "2", "suit": "clubs"}, {"rank": "Q", "suit": "hearts"}]}


game_id: 89987441-542f-4922-ad0d-f81eff3984d0
timestamp: 2026-01-25 00:08:53.161936
player_id: cpu_2
player_name: Priya
action: take_discard
card_rank: 6
card_suit: spades
decision_reason: took 6 from discard
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": false}]

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


game_id: 89987441-542f-4922-ad0d-f81eff3984d0
timestamp: 2026-01-25 00:08:53.167913
player_id: cpu_2
player_name: Priya
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 6 for 6 at pos 4
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}]

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


game_id: 89987441-542f-4922-ad0d-f81eff3984d0
timestamp: 2026-01-25 00:08:53.177128
player_id: cpu_3
player_name: Kenji
action: take_discard
card_rank: 6
card_suit: clubs
decision_reason: took 6 from discard
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": true}]

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


game_id: 89987441-542f-4922-ad0d-f81eff3984d0
timestamp: 2026-01-25 00:08:53.183048
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: swapped 6 for Q at pos 5
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: 89987441-542f-4922-ad0d-f81eff3984d0
timestamp: 2026-01-25 00:08:53.188790
player_id: cpu_0
player_name: Sage
action: draw_deck
card_rank: 9
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}]

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


game_id: 89987441-542f-4922-ad0d-f81eff3984d0
timestamp: 2026-01-25 00:08:53.195201
player_id: cpu_0
player_name: Sage
action: swap
card_rank: 9
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: swapped 9 for J at pos 0
hand_json:
[{"rank": "9", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}]

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


game_id: 89987441-542f-4922-ad0d-f81eff3984d0
timestamp: 2026-01-25 00:08:53.201361
player_id: cpu_1
player_name: Marcus
action: draw_deck
card_rank: Q
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}]

visible_opponents_json:
{"Sage": [{"rank": "9", "suit": "diamonds"}, {"rank": "J", "suit": "spades"}, {"rank": "7", "suit": "diamonds"}], "Priya": [{"rank": "2", "suit": "spades"}, {"rank": "3", "suit": "diamonds"}, {"rank": "6", "suit": "spades"}], "Kenji": [{"rank": "2", "suit": "clubs"}, {"rank": "6", "suit": "clubs"}]}


game_id: 89987441-542f-4922-ad0d-f81eff3984d0
timestamp: 2026-01-25 00:08:53.215165
player_id: cpu_2
player_name: Priya
action: draw_deck
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}]

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


game_id: 89987441-542f-4922-ad0d-f81eff3984d0
timestamp: 2026-01-25 00:08:53.221590
player_id: cpu_2
player_name: Priya
action: swap
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped A for 6 at pos 4
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}]

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


game_id: 89987441-542f-4922-ad0d-f81eff3984d0
timestamp: 2026-01-25 00:08:53.228057
player_id: cpu_3
player_name: Kenji
action: take_discard
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: 89987441-542f-4922-ad0d-f81eff3984d0
timestamp: 2026-01-25 00:08:53.233878
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped 6 for 5 at pos 2
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: 89987441-542f-4922-ad0d-f81eff3984d0
timestamp: 2026-01-25 00:08:53.239790
player_id: cpu_0
player_name: Sage
action: take_discard
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "9", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}]

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


game_id: 89987441-542f-4922-ad0d-f81eff3984d0
timestamp: 2026-01-25 00:08:53.245934
player_id: cpu_0
player_name: Sage
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: swapped 5 for J at pos 3
hand_json:
[{"rank": "9", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}]

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


game_id: 89987441-542f-4922-ad0d-f81eff3984d0
timestamp: 2026-01-25 00:08:53.252106
player_id: cpu_1
player_name: Marcus
action: draw_deck
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Sage": [{"rank": "9", "suit": "diamonds"}, {"rank": "5", "suit": "clubs"}, {"rank": "7", "suit": "diamonds"}], "Priya": [{"rank": "2", "suit": "spades"}, {"rank": "3", "suit": "diamonds"}, {"rank": "A", "suit": "diamonds"}], "Kenji": [{"rank": "2", "suit": "clubs"}, {"rank": "6", "suit": "spades"}, {"rank": "6", "suit": "clubs"}]}


game_id: 89987441-542f-4922-ad0d-f81eff3984d0
timestamp: 2026-01-25 00:08:53.264417
player_id: cpu_2
player_name: Priya
action: draw_deck
card_rank: 9
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}]

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


game_id: 89987441-542f-4922-ad0d-f81eff3984d0
timestamp: 2026-01-25 00:08:53.275994
player_id: cpu_3
player_name: Kenji
action: draw_deck
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: 89987441-542f-4922-ad0d-f81eff3984d0
timestamp: 2026-01-25 00:08:53.282011
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped A for 6 at pos 2
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: 89987441-542f-4922-ad0d-f81eff3984d0
timestamp: 2026-01-25 00:08:53.288163
player_id: cpu_0
player_name: Sage
action: take_discard
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "9", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}]

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


game_id: 89987441-542f-4922-ad0d-f81eff3984d0
timestamp: 2026-01-25 00:08:53.294543
player_id: cpu_0
player_name: Sage
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: swapped 6 for 9 at pos 0
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}]

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


game_id: 89987441-542f-4922-ad0d-f81eff3984d0
timestamp: 2026-01-25 00:08:53.300740
player_id: cpu_1
player_name: Marcus
action: draw_deck
card_rank: A
card_suit: spades
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Sage": [{"rank": "6", "suit": "spades"}, {"rank": "5", "suit": "clubs"}, {"rank": "7", "suit": "diamonds"}], "Priya": [{"rank": "2", "suit": "spades"}, {"rank": "3", "suit": "diamonds"}, {"rank": "A", "suit": "diamonds"}], "Kenji": [{"rank": "2", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "6", "suit": "clubs"}]}


game_id: 89987441-542f-4922-ad0d-f81eff3984d0
timestamp: 2026-01-25 00:08:53.309647
player_id: cpu_1
player_name: Marcus
action: swap
card_rank: A
card_suit: spades
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped A for 5 at pos 3
hand_json:
[{"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}]

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


game_id: 89987441-542f-4922-ad0d-f81eff3984d0
timestamp: 2026-01-25 00:08:53.316046
player_id: cpu_2
player_name: Priya
action: take_discard
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took 5 from discard
visible_opponents_json:
{"Sage": [{"rank": "6", "suit": "spades"}, {"rank": "5", "suit": "clubs"}, {"rank": "7", "suit": "diamonds"}], "Marcus": [{"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "spades"}], "Kenji": [{"rank": "2", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "6", "suit": "clubs"}]}


game_id: 89987441-542f-4922-ad0d-f81eff3984d0
timestamp: 2026-01-25 00:08:53.321998
player_id: cpu_2
player_name: Priya
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: swapped 5 for J at pos 1
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}]

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


game_id: 89987441-542f-4922-ad0d-f81eff3984d0
timestamp: 2026-01-25 00:08:53.328156
player_id: cpu_3
player_name: Kenji
action: draw_deck
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: 89987441-542f-4922-ad0d-f81eff3984d0
timestamp: 2026-01-25 00:08:53.334310
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 4 for 6 at pos 5
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 89987441-542f-4922-ad0d-f81eff3984d0
timestamp: 2026-01-25 00:08:53.342432
player_id: cpu_0
player_name: Sage
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}]

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


game_id: 89987441-542f-4922-ad0d-f81eff3984d0
timestamp: 2026-01-25 00:08:53.348308
player_id: cpu_0
player_name: Sage
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 6 for 7 at pos 5
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: 89987441-542f-4922-ad0d-f81eff3984d0
timestamp: 2026-01-25 00:08:53.353985
player_id: cpu_1
player_name: Marcus
action: take_discard
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}]

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


game_id: 89987441-542f-4922-ad0d-f81eff3984d0
timestamp: 2026-01-25 00:08:53.360389
player_id: cpu_1
player_name: Marcus
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: swapped 7 for J at pos 0
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}]

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


game_id: 89987441-542f-4922-ad0d-f81eff3984d0
timestamp: 2026-01-25 00:08:53.368142
player_id: cpu_2
player_name: Priya
action: draw_deck
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}]

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


game_id: 89987441-542f-4922-ad0d-f81eff3984d0
timestamp: 2026-01-25 00:08:53.374780
player_id: cpu_2
player_name: Priya
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped 6 for 5 at pos 0
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}]

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


game_id: 89987441-542f-4922-ad0d-f81eff3984d0
timestamp: 2026-01-25 00:08:53.381156
player_id: cpu_3
player_name: Kenji
action: draw_deck
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 89987441-542f-4922-ad0d-f81eff3984d0
timestamp: 2026-01-25 00:08:53.391055
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: swapped K for 4 at pos 5
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: 89987441-542f-4922-ad0d-f81eff3984d0
timestamp: 2026-01-25 00:08:53.396922
player_id: cpu_0
player_name: Sage
action: take_discard
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: 89987441-542f-4922-ad0d-f81eff3984d0
timestamp: 2026-01-25 00:08:53.402637
player_id: cpu_0
player_name: Sage
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped 4 for 6 at pos 0
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: 89987441-542f-4922-ad0d-f81eff3984d0
timestamp: 2026-01-25 00:08:53.408390
player_id: cpu_1
player_name: Marcus
action: take_discard
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}]

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


game_id: 89987441-542f-4922-ad0d-f81eff3984d0
timestamp: 2026-01-25 00:08:53.414780
player_id: cpu_1
player_name: Marcus
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 6 for 7 at pos 0
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}]

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


game_id: 89987441-542f-4922-ad0d-f81eff3984d0
timestamp: 2026-01-25 00:08:53.420905
player_id: cpu_2
player_name: Priya
action: draw_deck
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}]

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


game_id: 89987441-542f-4922-ad0d-f81eff3984d0
timestamp: 2026-01-25 00:08:53.426938
player_id: cpu_2
player_name: Priya
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped 3 for 6 at pos 0
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}]

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


game_id: 89987441-542f-4922-ad0d-f81eff3984d0
timestamp: 2026-01-25 00:08:53.433153
player_id: cpu_3
player_name: Kenji
action: take_discard
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: 89987441-542f-4922-ad0d-f81eff3984d0
timestamp: 2026-01-25 00:08:53.439401
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: swapped 6 for Q at pos 4
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: 89987441-542f-4922-ad0d-f81eff3984d0
timestamp: 2026-01-25 00:08:53.446017
player_id: cpu_0
player_name: Sage
action: draw_deck
card_rank: 9
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: 89987441-542f-4922-ad0d-f81eff3984d0
timestamp: 2026-01-25 00:08:53.458463
player_id: cpu_1
player_name: Marcus
action: draw_deck
card_rank: 9
card_suit: spades
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}]

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


game_id: 89987441-542f-4922-ad0d-f81eff3984d0
timestamp: 2026-01-25 00:08:53.471141
player_id: cpu_2
player_name: Priya
action: draw_deck
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}]

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


game_id: 89987441-542f-4922-ad0d-f81eff3984d0
timestamp: 2026-01-25 00:08:53.477103
player_id: cpu_2
player_name: Priya
action: swap
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: swapped 8 for 4 at pos 5
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": true}]

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


game_id: 89987441-542f-4922-ad0d-f81eff3984d0
timestamp: 2026-01-25 00:08:53.483093
player_id: cpu_3
player_name: Kenji
action: take_discard
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: 89987441-542f-4922-ad0d-f81eff3984d0
timestamp: 2026-01-25 00:08:53.489040
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped 4 for 6 at pos 4
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: 89987441-542f-4922-ad0d-f81eff3984d0
timestamp: 2026-01-25 00:08:53.494732
player_id: cpu_0
player_name: Sage
action: take_discard
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: took 6 from discard
visible_opponents_json:
{"Marcus": [{"rank": "6", "suit": "spades"}, {"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "spades"}], "Priya": [{"rank": "3", "suit": "spades"}, {"rank": "5", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}, {"rank": "3", "suit": "diamonds"}, {"rank": "A", "suit": "diamonds"}, {"rank": "8", "suit": "hearts"}], "Kenji": [{"rank": "2", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}, {"rank": "K", "suit": "hearts"}]}


game_id: 89987441-542f-4922-ad0d-f81eff3984d0
timestamp: 2026-01-25 00:08:53.501332
player_id: cpu_0
player_name: Sage
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: swapped 6 for 10 at pos 2
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: 89987441-542f-4922-ad0d-f81eff3984d0
timestamp: 2026-01-25 00:08:53.507446
player_id: cpu_1
player_name: Marcus
action: draw_deck
card_rank: 10
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Sage": [{"rank": "4", "suit": "clubs"}, {"rank": "6", "suit": "diamonds"}, {"rank": "5", "suit": "clubs"}, {"rank": "6", "suit": "clubs"}], "Priya": [{"rank": "3", "suit": "spades"}, {"rank": "5", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}, {"rank": "3", "suit": "diamonds"}, {"rank": "A", "suit": "diamonds"}, {"rank": "8", "suit": "hearts"}], "Kenji": [{"rank": "2", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}, {"rank": "K", "suit": "hearts"}]}


game_id: 89987441-542f-4922-ad0d-f81eff3984d0
timestamp: 2026-01-25 00:08:53.515045
player_id: cpu_1
player_name: Marcus
action: discard
card_rank: 10
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: discarded 10
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": true}]

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


game_id: 8025c0dc-ed4e-4942-8c01-09110cda6619
timestamp: 2026-01-25 00:08:53.532713
player_id: cpu_0
player_name: Diego
action: draw_deck
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}]

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


game_id: 8025c0dc-ed4e-4942-8c01-09110cda6619
timestamp: 2026-01-25 00:08:53.538746
player_id: cpu_0
player_name: Diego
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: swapped 6 for 9 at pos 2
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}]

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


game_id: 8025c0dc-ed4e-4942-8c01-09110cda6619
timestamp: 2026-01-25 00:08:53.544799
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: A
card_suit: spades
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": false}]

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


game_id: 8025c0dc-ed4e-4942-8c01-09110cda6619
timestamp: 2026-01-25 00:08:53.550713
player_id: cpu_1
player_name: Sage
action: swap
card_rank: A
card_suit: spades
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: swapped A for 8 at pos 2
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": false}]

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


game_id: 8025c0dc-ed4e-4942-8c01-09110cda6619
timestamp: 2026-01-25 00:08:53.556617
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: 10
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": false}]

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


game_id: 8025c0dc-ed4e-4942-8c01-09110cda6619
timestamp: 2026-01-25 00:08:53.568722
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": "5", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}]

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


game_id: 8025c0dc-ed4e-4942-8c01-09110cda6619
timestamp: 2026-01-25 00:08:53.580438
player_id: cpu_0
player_name: Diego
action: draw_deck
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}]

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


game_id: 8025c0dc-ed4e-4942-8c01-09110cda6619
timestamp: 2026-01-25 00:08:53.586364
player_id: cpu_0
player_name: Diego
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped A for 6 at pos 2
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}]

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


game_id: 8025c0dc-ed4e-4942-8c01-09110cda6619
timestamp: 2026-01-25 00:08:53.592504
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": false}]

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


game_id: 8025c0dc-ed4e-4942-8c01-09110cda6619
timestamp: 2026-01-25 00:08:53.604553
player_id: cpu_2
player_name: Kenji
action: take_discard
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": false}]

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


game_id: 8025c0dc-ed4e-4942-8c01-09110cda6619
timestamp: 2026-01-25 00:08:53.610812
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: swapped 7 for Q at pos 4
hand_json:
[{"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}]

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


game_id: 8025c0dc-ed4e-4942-8c01-09110cda6619
timestamp: 2026-01-25 00:08:53.617131
player_id: cpu_3
player_name: Priya
action: draw_deck
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}]

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


game_id: 8025c0dc-ed4e-4942-8c01-09110cda6619
timestamp: 2026-01-25 00:08:53.623255
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped 3 for 6 at pos 4
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}]

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


game_id: 8025c0dc-ed4e-4942-8c01-09110cda6619
timestamp: 2026-01-25 00:08:53.629104
player_id: cpu_0
player_name: Diego
action: take_discard
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}]

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


game_id: 8025c0dc-ed4e-4942-8c01-09110cda6619
timestamp: 2026-01-25 00:08:53.635180
player_id: cpu_0
player_name: Diego
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: swapped 6 for 4 at pos 4
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}]

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


game_id: 8025c0dc-ed4e-4942-8c01-09110cda6619
timestamp: 2026-01-25 00:08:53.641401
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: took 4 from discard
visible_opponents_json:
{"Diego": [{"rank": "A", "suit": "hearts"}, {"rank": "K", "suit": "spades"}, {"rank": "6", "suit": "hearts"}], "Kenji": [{"rank": "7", "suit": "spades"}, {"rank": "2", "suit": "diamonds"}, {"rank": "7", "suit": "diamonds"}], "Priya": [{"rank": "5", "suit": "diamonds"}, {"rank": "3", "suit": "clubs"}]}


game_id: 8025c0dc-ed4e-4942-8c01-09110cda6619
timestamp: 2026-01-25 00:08:53.647065
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped 4 for 6 at pos 1
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": false}]

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


game_id: 8025c0dc-ed4e-4942-8c01-09110cda6619
timestamp: 2026-01-25 00:08:53.652856
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}]

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


game_id: 8025c0dc-ed4e-4942-8c01-09110cda6619
timestamp: 2026-01-25 00:08:53.659131
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: swapped 7 for Q at pos 2
hand_json:
[{"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}]

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


game_id: 8025c0dc-ed4e-4942-8c01-09110cda6619
timestamp: 2026-01-25 00:08:53.665135
player_id: cpu_3
player_name: Priya
action: draw_deck
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}]

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


game_id: 8025c0dc-ed4e-4942-8c01-09110cda6619
timestamp: 2026-01-25 00:08:53.671216
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 5 for 6 at pos 3
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}]

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


game_id: 8025c0dc-ed4e-4942-8c01-09110cda6619
timestamp: 2026-01-25 00:08:53.678188
player_id: cpu_0
player_name: Diego
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}]

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


game_id: 8025c0dc-ed4e-4942-8c01-09110cda6619
timestamp: 2026-01-25 00:08:53.684287
player_id: cpu_0
player_name: Diego
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "2", "suit": "hearts"}
decision_reason: swapped 6 for 2 at pos 1
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}]

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


game_id: 8025c0dc-ed4e-4942-8c01-09110cda6619
timestamp: 2026-01-25 00:08:53.690335
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took 2 from discard
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": false}]

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


game_id: 8025c0dc-ed4e-4942-8c01-09110cda6619
timestamp: 2026-01-25 00:08:53.696638
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: swapped 2 for 4 at pos 1
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": false}]

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


game_id: 8025c0dc-ed4e-4942-8c01-09110cda6619
timestamp: 2026-01-25 00:08:53.702485
player_id: cpu_2
player_name: Kenji
action: take_discard
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}]

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


game_id: 8025c0dc-ed4e-4942-8c01-09110cda6619
timestamp: 2026-01-25 00:08:53.710717
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped 4 for 7 at pos 1
hand_json:
[{"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}]

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


game_id: 8025c0dc-ed4e-4942-8c01-09110cda6619
timestamp: 2026-01-25 00:08:53.716518
player_id: cpu_3
player_name: Priya
action: take_discard
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}]

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


game_id: 8025c0dc-ed4e-4942-8c01-09110cda6619
timestamp: 2026-01-25 00:08:53.722429
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: swapped 7 for 10 at pos 1
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}]

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


game_id: 8025c0dc-ed4e-4942-8c01-09110cda6619
timestamp: 2026-01-25 00:08:53.728265
player_id: cpu_0
player_name: Diego
action: draw_deck
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}]

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


game_id: 8025c0dc-ed4e-4942-8c01-09110cda6619
timestamp: 2026-01-25 00:08:53.734201
player_id: cpu_0
player_name: Diego
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "K", "suit": "clubs"}
decision_reason: swapped 4 for K at pos 0
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}]

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


game_id: 8025c0dc-ed4e-4942-8c01-09110cda6619
timestamp: 2026-01-25 00:08:53.740414
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: took K from discard
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": false}]

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


game_id: 8025c0dc-ed4e-4942-8c01-09110cda6619
timestamp: 2026-01-25 00:08:53.746594
player_id: cpu_1
player_name: Sage
action: swap
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "A", "suit": "spades"}
decision_reason: swapped K for A at pos 2
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": false}]

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


game_id: 8025c0dc-ed4e-4942-8c01-09110cda6619
timestamp: 2026-01-25 00:08:53.753071
player_id: cpu_2
player_name: Kenji
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": "Q", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}]

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


game_id: 8025c0dc-ed4e-4942-8c01-09110cda6619
timestamp: 2026-01-25 00:08:53.759116
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: A
card_suit: spades
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped A for 7 at pos 2
hand_json:
[{"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}]

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


game_id: 8025c0dc-ed4e-4942-8c01-09110cda6619
timestamp: 2026-01-25 00:08:53.765358
player_id: cpu_3
player_name: Priya
action: take_discard
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}]

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


game_id: 8025c0dc-ed4e-4942-8c01-09110cda6619
timestamp: 2026-01-25 00:08:53.771960
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: swapped 7 for 4 at pos 5
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}]

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


game_id: 8025c0dc-ed4e-4942-8c01-09110cda6619
timestamp: 2026-01-25 00:08:53.778027
player_id: cpu_0
player_name: Diego
action: take_discard
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}]

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


game_id: 8025c0dc-ed4e-4942-8c01-09110cda6619
timestamp: 2026-01-25 00:08:53.784021
player_id: cpu_0
player_name: Diego
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 4 for 6 at pos 1
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}]

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


game_id: 8025c0dc-ed4e-4942-8c01-09110cda6619
timestamp: 2026-01-25 00:08:53.790127
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": false}]

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


game_id: 8025c0dc-ed4e-4942-8c01-09110cda6619
timestamp: 2026-01-25 00:08:53.796244
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "3", "suit": "diamonds"}
decision_reason: swapped 6 for 3 at pos 5
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: 8025c0dc-ed4e-4942-8c01-09110cda6619
timestamp: 2026-01-25 00:08:53.802457
player_id: cpu_2
player_name: Kenji
action: take_discard
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}]

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


game_id: 8025c0dc-ed4e-4942-8c01-09110cda6619
timestamp: 2026-01-25 00:08:53.808681
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 3 for 7 at pos 4
hand_json:
[{"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}]

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


game_id: 8025c0dc-ed4e-4942-8c01-09110cda6619
timestamp: 2026-01-25 00:08:53.814734
player_id: cpu_3
player_name: Priya
action: take_discard
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}]

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


game_id: 8025c0dc-ed4e-4942-8c01-09110cda6619
timestamp: 2026-01-25 00:08:53.820663
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: swapped 7 for 10 at pos 2
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}]

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


game_id: 8025c0dc-ed4e-4942-8c01-09110cda6619
timestamp: 2026-01-25 00:08:53.827036
player_id: cpu_0
player_name: Diego
action: draw_deck
card_rank: J
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}]

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


game_id: 8025c0dc-ed4e-4942-8c01-09110cda6619
timestamp: 2026-01-25 00:08:53.839700
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: 9
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


