# moves

game_id: 4053ffe8-8094-453b-9df8-2cb95a3fd94d
timestamp: 2026-01-25 00:10:32.289143
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped 5 for 5 at pos 0
hand_json:
[{"rank": "5", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: 4053ffe8-8094-453b-9df8-2cb95a3fd94d
timestamp: 2026-01-25 00:10:32.295232
player_id: cpu_2
player_name: Maya
action: take_discard
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "7", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}]

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


game_id: 4053ffe8-8094-453b-9df8-2cb95a3fd94d
timestamp: 2026-01-25 00:10:32.301152
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: swapped 5 for 8 at pos 2
hand_json:
[{"rank": "7", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}]

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


game_id: 4053ffe8-8094-453b-9df8-2cb95a3fd94d
timestamp: 2026-01-25 00:10:32.306985
player_id: cpu_3
player_name: River
action: draw_deck
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 4053ffe8-8094-453b-9df8-2cb95a3fd94d
timestamp: 2026-01-25 00:10:32.312984
player_id: cpu_3
player_name: River
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "K", "suit": "spades"}
decision_reason: swapped 5 for K at pos 2
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 4053ffe8-8094-453b-9df8-2cb95a3fd94d
timestamp: 2026-01-25 00:10:32.318930
player_id: cpu_0
player_name: Diego
action: take_discard
card_rank: K
card_suit: spades
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: took K from discard
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": false}]

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


game_id: 4053ffe8-8094-453b-9df8-2cb95a3fd94d
timestamp: 2026-01-25 00:10:32.324985
player_id: cpu_0
player_name: Diego
action: swap
card_rank: K
card_suit: spades
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: swapped K for 8 at pos 3
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": false}]

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


game_id: 4053ffe8-8094-453b-9df8-2cb95a3fd94d
timestamp: 2026-01-25 00:10:32.331033
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: 10
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: 4053ffe8-8094-453b-9df8-2cb95a3fd94d
timestamp: 2026-01-25 00:10:32.343375
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}]

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


game_id: 4053ffe8-8094-453b-9df8-2cb95a3fd94d
timestamp: 2026-01-25 00:10:32.349306
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped 3 for 5 at pos 2
hand_json:
[{"rank": "7", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}]

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


game_id: 4053ffe8-8094-453b-9df8-2cb95a3fd94d
timestamp: 2026-01-25 00:10:32.355224
player_id: cpu_3
player_name: River
action: take_discard
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 4053ffe8-8094-453b-9df8-2cb95a3fd94d
timestamp: 2026-01-25 00:10:32.361227
player_id: cpu_3
player_name: River
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped 5 for 7 at pos 3
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 4053ffe8-8094-453b-9df8-2cb95a3fd94d
timestamp: 2026-01-25 00:10:32.367327
player_id: cpu_0
player_name: Diego
action: take_discard
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": false}]

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


game_id: 4053ffe8-8094-453b-9df8-2cb95a3fd94d
timestamp: 2026-01-25 00:10:32.373363
player_id: cpu_0
player_name: Diego
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped 7 for 5 at pos 4
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}]

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


game_id: 4053ffe8-8094-453b-9df8-2cb95a3fd94d
timestamp: 2026-01-25 00:10:32.379143
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: took 5 from discard
visible_opponents_json:
{"Diego": [{"rank": "K", "suit": "clubs"}, {"rank": "K", "suit": "spades"}, {"rank": "7", "suit": "clubs"}], "Maya": [{"rank": "3", "suit": "spades"}, {"rank": "A", "suit": "spades"}], "River": [{"rank": "2", "suit": "hearts"}, {"rank": "5", "suit": "hearts"}, {"rank": "5", "suit": "clubs"}, {"rank": "4", "suit": "spades"}]}


game_id: 4053ffe8-8094-453b-9df8-2cb95a3fd94d
timestamp: 2026-01-25 00:10:32.385048
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: swapped 5 for J at pos 3
hand_json:
[{"rank": "5", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: 4053ffe8-8094-453b-9df8-2cb95a3fd94d
timestamp: 2026-01-25 00:10:32.391062
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: 10
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}]

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


game_id: 4053ffe8-8094-453b-9df8-2cb95a3fd94d
timestamp: 2026-01-25 00:10:32.403130
player_id: cpu_3
player_name: River
action: draw_deck
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 4053ffe8-8094-453b-9df8-2cb95a3fd94d
timestamp: 2026-01-25 00:10:32.409134
player_id: cpu_3
player_name: River
action: swap
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped A for 5 at pos 2
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 4053ffe8-8094-453b-9df8-2cb95a3fd94d
timestamp: 2026-01-25 00:10:32.415303
player_id: cpu_0
player_name: Diego
action: take_discard
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}]

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


game_id: 4053ffe8-8094-453b-9df8-2cb95a3fd94d
timestamp: 2026-01-25 00:10:32.421544
player_id: cpu_0
player_name: Diego
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped 5 for 7 at pos 4
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}]

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


game_id: 4053ffe8-8094-453b-9df8-2cb95a3fd94d
timestamp: 2026-01-25 00:10:32.427272
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "5", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: 4053ffe8-8094-453b-9df8-2cb95a3fd94d
timestamp: 2026-01-25 00:10:32.433495
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: swapped 7 for Q at pos 1
hand_json:
[{"rank": "5", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: 4053ffe8-8094-453b-9df8-2cb95a3fd94d
timestamp: 2026-01-25 00:10:32.440321
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Diego": [{"rank": "K", "suit": "clubs"}, {"rank": "K", "suit": "spades"}, {"rank": "5", "suit": "hearts"}], "Sage": [{"rank": "5", "suit": "spades"}, {"rank": "7", "suit": "clubs"}, {"rank": "4", "suit": "clubs"}, {"rank": "5", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}, {"rank": "3", "suit": "clubs"}], "River": [{"rank": "2", "suit": "hearts"}, {"rank": "A", "suit": "diamonds"}, {"rank": "5", "suit": "clubs"}, {"rank": "4", "suit": "spades"}]}


game_id: 4053ffe8-8094-453b-9df8-2cb95a3fd94d
timestamp: 2026-01-25 00:10:32.446315
player_id: cpu_2
player_name: Maya
action: swap
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "3", "suit": "spades"}
decision_reason: swapped K for 3 at pos 2
hand_json:
[{"rank": "7", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}]

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


game_id: 4053ffe8-8094-453b-9df8-2cb95a3fd94d
timestamp: 2026-01-25 00:10:32.452305
player_id: cpu_3
player_name: River
action: take_discard
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 4053ffe8-8094-453b-9df8-2cb95a3fd94d
timestamp: 2026-01-25 00:10:32.458274
player_id: cpu_3
player_name: River
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped 3 for 5 at pos 3
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 4053ffe8-8094-453b-9df8-2cb95a3fd94d
timestamp: 2026-01-25 00:10:32.464314
player_id: cpu_0
player_name: Diego
action: take_discard
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}]

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


game_id: 4053ffe8-8094-453b-9df8-2cb95a3fd94d
timestamp: 2026-01-25 00:10:32.470379
player_id: cpu_0
player_name: Diego
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: swapped 5 for 4 at pos 1
hand_json:
[{"rank": "10", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: 4d225c4f-a72a-4773-9abe-191facfcfb2b
timestamp: 2026-01-25 00:10:32.488033
player_id: cpu_0
player_name: Kenji
action: take_discard
card_rank: 8
card_suit: hearts
decision_reason: took 8 from discard
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}]

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


game_id: 4d225c4f-a72a-4773-9abe-191facfcfb2b
timestamp: 2026-01-25 00:10:32.494128
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "4", "suit": "spades"}
decision_reason: swapped 8 for 4 at pos 1
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}]

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


game_id: 4d225c4f-a72a-4773-9abe-191facfcfb2b
timestamp: 2026-01-25 00:10:32.500005
player_id: cpu_1
player_name: Diego
action: take_discard
card_rank: 4
card_suit: spades
decision_reason: took 4 from discard
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: 4d225c4f-a72a-4773-9abe-191facfcfb2b
timestamp: 2026-01-25 00:10:32.506089
player_id: cpu_1
player_name: Diego
action: swap
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped 4 for 6 at pos 4
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: 4d225c4f-a72a-4773-9abe-191facfcfb2b
timestamp: 2026-01-25 00:10:32.512201
player_id: cpu_2
player_name: Maya
action: take_discard
card_rank: 6
card_suit: hearts
decision_reason: took 6 from discard
hand_json:
[{"rank": "Q", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: 4d225c4f-a72a-4773-9abe-191facfcfb2b
timestamp: 2026-01-25 00:10:32.518430
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: swapped 6 for Q at pos 0
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: 4d225c4f-a72a-4773-9abe-191facfcfb2b
timestamp: 2026-01-25 00:10:32.524846
player_id: cpu_3
player_name: Sofia
action: draw_deck
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}]

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


game_id: 4d225c4f-a72a-4773-9abe-191facfcfb2b
timestamp: 2026-01-25 00:10:32.530802
player_id: cpu_3
player_name: Sofia
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: swapped A for 8 at pos 3
hand_json:
[{"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}]

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


game_id: 4d225c4f-a72a-4773-9abe-191facfcfb2b
timestamp: 2026-01-25 00:10:32.536710
player_id: cpu_0
player_name: Kenji
action: take_discard
card_rank: 8
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: took 8 from discard
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}]

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


game_id: 4d225c4f-a72a-4773-9abe-191facfcfb2b
timestamp: 2026-01-25 00:10:32.542507
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 8
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: swapped 8 for Q at pos 4
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}]

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


game_id: 4d225c4f-a72a-4773-9abe-191facfcfb2b
timestamp: 2026-01-25 00:10:32.548064
player_id: cpu_1
player_name: Diego
action: draw_deck
card_rank: 8
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: 4d225c4f-a72a-4773-9abe-191facfcfb2b
timestamp: 2026-01-25 00:10:32.559924
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: J
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: 4d225c4f-a72a-4773-9abe-191facfcfb2b
timestamp: 2026-01-25 00:10:32.572565
player_id: cpu_3
player_name: Sofia
action: draw_deck
card_rank: A
card_suit: spades
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}]

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


game_id: 4d225c4f-a72a-4773-9abe-191facfcfb2b
timestamp: 2026-01-25 00:10:32.578875
player_id: cpu_3
player_name: Sofia
action: swap
card_rank: A
card_suit: spades
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: swapped A for 10 at pos 0
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}]

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


game_id: 4d225c4f-a72a-4773-9abe-191facfcfb2b
timestamp: 2026-01-25 00:10:32.584994
player_id: cpu_0
player_name: Kenji
action: draw_deck
card_rank: Q
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}]

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


game_id: 4d225c4f-a72a-4773-9abe-191facfcfb2b
timestamp: 2026-01-25 00:10:32.597207
player_id: cpu_1
player_name: Diego
action: draw_deck
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Kenji": [{"rank": "8", "suit": "hearts"}, {"rank": "3", "suit": "diamonds"}, {"rank": "8", "suit": "diamonds"}], "Maya": [{"rank": "6", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}], "Sofia": [{"rank": "A", "suit": "spades"}, {"rank": "6", "suit": "diamonds"}, {"rank": "A", "suit": "hearts"}]}


game_id: 4d225c4f-a72a-4773-9abe-191facfcfb2b
timestamp: 2026-01-25 00:10:32.603173
player_id: cpu_1
player_name: Diego
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: swapped 5 for J at pos 1
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: 4d225c4f-a72a-4773-9abe-191facfcfb2b
timestamp: 2026-01-25 00:10:32.609189
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Kenji": [{"rank": "8", "suit": "hearts"}, {"rank": "3", "suit": "diamonds"}, {"rank": "8", "suit": "diamonds"}], "Diego": [{"rank": "2", "suit": "spades"}, {"rank": "5", "suit": "hearts"}, {"rank": "4", "suit": "spades"}], "Sofia": [{"rank": "A", "suit": "spades"}, {"rank": "6", "suit": "diamonds"}, {"rank": "A", "suit": "hearts"}]}


game_id: 4d225c4f-a72a-4773-9abe-191facfcfb2b
timestamp: 2026-01-25 00:10:32.615186
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped 5 for 6 at pos 0
hand_json:
[{"rank": "5", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: 4d225c4f-a72a-4773-9abe-191facfcfb2b
timestamp: 2026-01-25 00:10:32.621091
player_id: cpu_3
player_name: Sofia
action: take_discard
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}]

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


game_id: 4d225c4f-a72a-4773-9abe-191facfcfb2b
timestamp: 2026-01-25 00:10:32.626922
player_id: cpu_3
player_name: Sofia
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped 6 for 7 at pos 5
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}]

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


game_id: 4d225c4f-a72a-4773-9abe-191facfcfb2b
timestamp: 2026-01-25 00:10:32.634501
player_id: cpu_0
player_name: Kenji
action: take_discard
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: took 7 from discard
visible_opponents_json:
{"Diego": [{"rank": "2", "suit": "spades"}, {"rank": "5", "suit": "hearts"}, {"rank": "4", "suit": "spades"}], "Maya": [{"rank": "5", "suit": "spades"}, {"rank": "3", "suit": "clubs"}], "Sofia": [{"rank": "A", "suit": "spades"}, {"rank": "6", "suit": "diamonds"}, {"rank": "A", "suit": "hearts"}, {"rank": "6", "suit": "hearts"}]}


game_id: 4d225c4f-a72a-4773-9abe-191facfcfb2b
timestamp: 2026-01-25 00:10:32.639995
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: swapped 7 for 8 at pos 1
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}]

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


game_id: 4d225c4f-a72a-4773-9abe-191facfcfb2b
timestamp: 2026-01-25 00:10:32.645749
player_id: cpu_1
player_name: Diego
action: draw_deck
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: 4d225c4f-a72a-4773-9abe-191facfcfb2b
timestamp: 2026-01-25 00:10:32.651776
player_id: cpu_1
player_name: Diego
action: swap
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped A for 5 at pos 1
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: 4d225c4f-a72a-4773-9abe-191facfcfb2b
timestamp: 2026-01-25 00:10:32.657956
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: 4d225c4f-a72a-4773-9abe-191facfcfb2b
timestamp: 2026-01-25 00:10:32.664507
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: swapped 7 for Q at pos 2
hand_json:
[{"rank": "5", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: 4d225c4f-a72a-4773-9abe-191facfcfb2b
timestamp: 2026-01-25 00:10:32.670990
player_id: cpu_3
player_name: Sofia
action: draw_deck
card_rank: 8
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}]

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


game_id: 4d225c4f-a72a-4773-9abe-191facfcfb2b
timestamp: 2026-01-25 00:10:32.683176
player_id: cpu_0
player_name: Kenji
action: draw_deck
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}]

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


game_id: 4d225c4f-a72a-4773-9abe-191facfcfb2b
timestamp: 2026-01-25 00:10:32.689194
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: swapped K for 8 at pos 4
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}]

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


game_id: 4d225c4f-a72a-4773-9abe-191facfcfb2b
timestamp: 2026-01-25 00:10:32.695083
player_id: cpu_1
player_name: Diego
action: draw_deck
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: 4d225c4f-a72a-4773-9abe-191facfcfb2b
timestamp: 2026-01-25 00:10:32.700871
player_id: cpu_1
player_name: Diego
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "3", "suit": "hearts"}
decision_reason: swapped 7 for 3 at pos 3
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: 4d225c4f-a72a-4773-9abe-191facfcfb2b
timestamp: 2026-01-25 00:10:32.706716
player_id: cpu_2
player_name: Maya
action: take_discard
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "5", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: 4d225c4f-a72a-4773-9abe-191facfcfb2b
timestamp: 2026-01-25 00:10:32.712523
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped 3 for 7 at pos 2
hand_json:
[{"rank": "5", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: 4d225c4f-a72a-4773-9abe-191facfcfb2b
timestamp: 2026-01-25 00:10:32.718873
player_id: cpu_3
player_name: Sofia
action: take_discard
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: took 7 from discard
visible_opponents_json:
{"Kenji": [{"rank": "7", "suit": "clubs"}, {"rank": "3", "suit": "diamonds"}, {"rank": "K", "suit": "hearts"}], "Diego": [{"rank": "2", "suit": "spades"}, {"rank": "A", "suit": "clubs"}, {"rank": "7", "suit": "diamonds"}, {"rank": "4", "suit": "spades"}], "Maya": [{"rank": "5", "suit": "spades"}, {"rank": "3", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}]}


game_id: 4d225c4f-a72a-4773-9abe-191facfcfb2b
timestamp: 2026-01-25 00:10:32.728930
player_id: cpu_3
player_name: Sofia
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: swapped 7 for 9 at pos 1
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}]

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


game_id: 4d225c4f-a72a-4773-9abe-191facfcfb2b
timestamp: 2026-01-25 00:10:32.734724
player_id: cpu_0
player_name: Kenji
action: draw_deck
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}]

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


game_id: 4d225c4f-a72a-4773-9abe-191facfcfb2b
timestamp: 2026-01-25 00:10:32.740755
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped 4 for 7 at pos 1
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}]

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


game_id: 4d225c4f-a72a-4773-9abe-191facfcfb2b
timestamp: 2026-01-25 00:10:32.747342
player_id: cpu_1
player_name: Diego
action: take_discard
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: 4d225c4f-a72a-4773-9abe-191facfcfb2b
timestamp: 2026-01-25 00:10:32.754020
player_id: cpu_1
player_name: Diego
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "K", "suit": "clubs"}
decision_reason: swapped 7 for K at pos 2
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: 4d225c4f-a72a-4773-9abe-191facfcfb2b
timestamp: 2026-01-25 00:10:32.759907
player_id: cpu_2
player_name: Maya
action: take_discard
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took K from discard
hand_json:
[{"rank": "5", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: 4d225c4f-a72a-4773-9abe-191facfcfb2b
timestamp: 2026-01-25 00:10:32.765796
player_id: cpu_2
player_name: Maya
action: swap
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped K for 5 at pos 0
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: 4d225c4f-a72a-4773-9abe-191facfcfb2b
timestamp: 2026-01-25 00:10:32.771917
player_id: cpu_3
player_name: Sofia
action: take_discard
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}]

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


game_id: 4d225c4f-a72a-4773-9abe-191facfcfb2b
timestamp: 2026-01-25 00:10:32.778106
player_id: cpu_3
player_name: Sofia
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped 5 for 7 at pos 1
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}]

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


game_id: 4d225c4f-a72a-4773-9abe-191facfcfb2b
timestamp: 2026-01-25 00:10:32.787995
player_id: cpu_0
player_name: Kenji
action: take_discard
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}]

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


game_id: 4d225c4f-a72a-4773-9abe-191facfcfb2b
timestamp: 2026-01-25 00:10:32.794384
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: swapped 7 for 4 at pos 0
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}]

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


game_id: 4d225c4f-a72a-4773-9abe-191facfcfb2b
timestamp: 2026-01-25 00:10:32.800660
player_id: cpu_1
player_name: Diego
action: take_discard
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: 4d225c4f-a72a-4773-9abe-191facfcfb2b
timestamp: 2026-01-25 00:10:32.806989
player_id: cpu_1
player_name: Diego
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped 4 for 7 at pos 2
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: 4d225c4f-a72a-4773-9abe-191facfcfb2b
timestamp: 2026-01-25 00:10:32.813620
player_id: cpu_2
player_name: Maya
action: take_discard
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: 4d225c4f-a72a-4773-9abe-191facfcfb2b
timestamp: 2026-01-25 00:10:32.819592
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "2", "suit": "hearts"}
decision_reason: swapped 7 for 2 at pos 1
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: 4d225c4f-a72a-4773-9abe-191facfcfb2b
timestamp: 2026-01-25 00:10:32.825998
player_id: cpu_3
player_name: Sofia
action: take_discard
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took 2 from discard
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}]

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


game_id: 4d225c4f-a72a-4773-9abe-191facfcfb2b
timestamp: 2026-01-25 00:10:32.835866
player_id: cpu_3
player_name: Sofia
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": "A", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}]

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


game_id: 4d225c4f-a72a-4773-9abe-191facfcfb2b
timestamp: 2026-01-25 00:10:32.842254
player_id: cpu_0
player_name: Kenji
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": "7", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}]

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


game_id: 4d225c4f-a72a-4773-9abe-191facfcfb2b
timestamp: 2026-01-25 00:10:32.848785
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped 6 for 7 at pos 0
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}]

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


game_id: 4d225c4f-a72a-4773-9abe-191facfcfb2b
timestamp: 2026-01-25 00:10:32.855117
player_id: cpu_1
player_name: Diego
action: take_discard
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: 4d225c4f-a72a-4773-9abe-191facfcfb2b
timestamp: 2026-01-25 00:10:32.861206
player_id: cpu_1
player_name: Diego
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 7 for 6 at pos 5
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}]

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


game_id: 4d225c4f-a72a-4773-9abe-191facfcfb2b
timestamp: 2026-01-25 00:10:32.867204
player_id: cpu_2
player_name: Maya
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: 4d225c4f-a72a-4773-9abe-191facfcfb2b
timestamp: 2026-01-25 00:10:32.873203
player_id: cpu_2
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": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: 4d225c4f-a72a-4773-9abe-191facfcfb2b
timestamp: 2026-01-25 00:10:32.879405
player_id: cpu_3
player_name: Sofia
action: take_discard
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}]

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


game_id: 4d225c4f-a72a-4773-9abe-191facfcfb2b
timestamp: 2026-01-25 00:10:32.886178
player_id: cpu_3
player_name: Sofia
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: swapped 7 for J at pos 4
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}]

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


game_id: 4d225c4f-a72a-4773-9abe-191facfcfb2b
timestamp: 2026-01-25 00:10:32.892543
player_id: cpu_0
player_name: Kenji
action: draw_deck
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}]

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


game_id: 4d225c4f-a72a-4773-9abe-191facfcfb2b
timestamp: 2026-01-25 00:10:32.899234
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped 5 for 6 at pos 0
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": true}]

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


game_id: fca52145-f62d-4633-9d19-8f7852b61885
timestamp: 2026-01-25 00:10:32.916268
player_id: cpu_0
player_name: Sage
action: take_discard
card_rank: A
card_suit: diamonds
decision_reason: took A from discard
hand_json:
[{"rank": "K", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": true}]

visible_opponents_json:
{"Maya": [{"rank": "10", "suit": "clubs"}, {"rank": "6", "suit": "clubs"}], "Sofia": [{"rank": "J", "suit": "diamonds"}, {"rank": "7", "suit": "spades"}], "Kenji": [{"rank": "Q", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}]}


game_id: fca52145-f62d-4633-9d19-8f7852b61885
timestamp: 2026-01-25 00:10:32.922711
player_id: cpu_0
player_name: Sage
action: swap
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: swapped A for Q at pos 5
hand_json:
[{"rank": "K", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}]

visible_opponents_json:
{"Maya": [{"rank": "10", "suit": "clubs"}, {"rank": "6", "suit": "clubs"}], "Sofia": [{"rank": "J", "suit": "diamonds"}, {"rank": "7", "suit": "spades"}], "Kenji": [{"rank": "Q", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}]}


game_id: fca52145-f62d-4633-9d19-8f7852b61885
timestamp: 2026-01-25 00:10:32.928463
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}]

visible_opponents_json:
{"Sage": [{"rank": "3", "suit": "spades"}, {"rank": "A", "suit": "diamonds"}], "Sofia": [{"rank": "J", "suit": "diamonds"}, {"rank": "7", "suit": "spades"}], "Kenji": [{"rank": "Q", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}]}


game_id: fca52145-f62d-4633-9d19-8f7852b61885
timestamp: 2026-01-25 00:10:32.934768
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: swapped 4 for 10 at pos 1
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}]

visible_opponents_json:
{"Sage": [{"rank": "3", "suit": "spades"}, {"rank": "A", "suit": "diamonds"}], "Sofia": [{"rank": "J", "suit": "diamonds"}, {"rank": "7", "suit": "spades"}], "Kenji": [{"rank": "Q", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}]}


game_id: fca52145-f62d-4633-9d19-8f7852b61885
timestamp: 2026-01-25 00:10:32.940591
player_id: cpu_2
player_name: Sofia
action: draw_deck
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}]

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


game_id: fca52145-f62d-4633-9d19-8f7852b61885
timestamp: 2026-01-25 00:10:32.946573
player_id: cpu_2
player_name: Sofia
action: swap
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: swapped 2 for J at pos 0
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}]

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


game_id: fca52145-f62d-4633-9d19-8f7852b61885
timestamp: 2026-01-25 00:10:32.952276
player_id: cpu_3
player_name: Kenji
action: draw_deck
card_rank: 10
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}]

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


game_id: fca52145-f62d-4633-9d19-8f7852b61885
timestamp: 2026-01-25 00:10:32.964104
player_id: cpu_0
player_name: Sage
action: draw_deck
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: fca52145-f62d-4633-9d19-8f7852b61885
timestamp: 2026-01-25 00:10:32.970076
player_id: cpu_0
player_name: Sage
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "3", "suit": "hearts"}
decision_reason: swapped 3 for 3 at pos 4
hand_json:
[{"rank": "K", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: fca52145-f62d-4633-9d19-8f7852b61885
timestamp: 2026-01-25 00:10:32.976530
player_id: cpu_1
player_name: Maya
action: take_discard
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: fca52145-f62d-4633-9d19-8f7852b61885
timestamp: 2026-01-25 00:10:32.982809
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 3 for 6 at pos 5
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: fca52145-f62d-4633-9d19-8f7852b61885
timestamp: 2026-01-25 00:10:32.989064
player_id: cpu_2
player_name: Sofia
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}]

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


game_id: fca52145-f62d-4633-9d19-8f7852b61885
timestamp: 2026-01-25 00:10:32.995081
player_id: cpu_2
player_name: Sofia
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "K", "suit": "hearts"}
decision_reason: swapped 6 for K at pos 3
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}]

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


game_id: fca52145-f62d-4633-9d19-8f7852b61885
timestamp: 2026-01-25 00:10:33.000789
player_id: cpu_3
player_name: Kenji
action: take_discard
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: took K from discard
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}]

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


game_id: fca52145-f62d-4633-9d19-8f7852b61885
timestamp: 2026-01-25 00:10:33.006483
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: swapped K for Q at pos 2
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}]

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


game_id: fca52145-f62d-4633-9d19-8f7852b61885
timestamp: 2026-01-25 00:10:33.012623
player_id: cpu_0
player_name: Sage
action: draw_deck
card_rank: Q
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: fca52145-f62d-4633-9d19-8f7852b61885
timestamp: 2026-01-25 00:10:33.018772
player_id: cpu_0
player_name: Sage
action: swap
card_rank: Q
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: swapped Q for 8 at pos 2
hand_json:
[{"rank": "K", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: fca52145-f62d-4633-9d19-8f7852b61885
timestamp: 2026-01-25 00:10:33.024795
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: fca52145-f62d-4633-9d19-8f7852b61885
timestamp: 2026-01-25 00:10:33.030766
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: swapped 2 for 4 at pos 1
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: fca52145-f62d-4633-9d19-8f7852b61885
timestamp: 2026-01-25 00:10:33.039736
player_id: cpu_2
player_name: Sofia
action: take_discard
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}]

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


game_id: fca52145-f62d-4633-9d19-8f7852b61885
timestamp: 2026-01-25 00:10:33.045972
player_id: cpu_2
player_name: Sofia
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped 4 for 7 at pos 5
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: fca52145-f62d-4633-9d19-8f7852b61885
timestamp: 2026-01-25 00:10:33.052283
player_id: cpu_3
player_name: Kenji
action: take_discard
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}]

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


game_id: fca52145-f62d-4633-9d19-8f7852b61885
timestamp: 2026-01-25 00:10:33.058652
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "2", "suit": "spades"}
decision_reason: swapped 7 for 2 at pos 3
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}]

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


game_id: fca52145-f62d-4633-9d19-8f7852b61885
timestamp: 2026-01-25 00:10:33.064664
player_id: cpu_0
player_name: Sage
action: take_discard
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: took 2 from discard
hand_json:
[{"rank": "K", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: fca52145-f62d-4633-9d19-8f7852b61885
timestamp: 2026-01-25 00:10:33.070719
player_id: cpu_0
player_name: Sage
action: swap
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: swapped 2 for Q at pos 2
hand_json:
[{"rank": "K", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: fca52145-f62d-4633-9d19-8f7852b61885
timestamp: 2026-01-25 00:10:33.076751
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: 9
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: fca52145-f62d-4633-9d19-8f7852b61885
timestamp: 2026-01-25 00:10:33.088796
player_id: cpu_2
player_name: Sofia
action: draw_deck
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: fca52145-f62d-4633-9d19-8f7852b61885
timestamp: 2026-01-25 00:10:33.094717
player_id: cpu_2
player_name: Sofia
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped A for 6 at pos 3
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: fca52145-f62d-4633-9d19-8f7852b61885
timestamp: 2026-01-25 00:10:33.100983
player_id: cpu_3
player_name: Kenji
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}]

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


game_id: fca52145-f62d-4633-9d19-8f7852b61885
timestamp: 2026-01-25 00:10:33.107164
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped 6 for 7 at pos 3
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}]

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


game_id: fca52145-f62d-4633-9d19-8f7852b61885
timestamp: 2026-01-25 00:10:33.117347
player_id: cpu_0
player_name: Sage
action: draw_deck
card_rank: J
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: fca52145-f62d-4633-9d19-8f7852b61885
timestamp: 2026-01-25 00:10:33.129595
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: 9
card_suit: spades
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Sage": [{"rank": "3", "suit": "spades"}, {"rank": "2", "suit": "spades"}, {"rank": "3", "suit": "diamonds"}, {"rank": "A", "suit": "diamonds"}], "Sofia": [{"rank": "2", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}], "Kenji": [{"rank": "K", "suit": "hearts"}, {"rank": "6", "suit": "clubs"}, {"rank": "4", "suit": "diamonds"}]}


game_id: fca52145-f62d-4633-9d19-8f7852b61885
timestamp: 2026-01-25 00:10:33.142079
player_id: cpu_2
player_name: Sofia
action: draw_deck
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: fca52145-f62d-4633-9d19-8f7852b61885
timestamp: 2026-01-25 00:10:33.148534
player_id: cpu_2
player_name: Sofia
action: swap
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: swapped K for 4 at pos 5
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: fca52145-f62d-4633-9d19-8f7852b61885
timestamp: 2026-01-25 00:10:33.154407
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": "A", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}]

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


game_id: fca52145-f62d-4633-9d19-8f7852b61885
timestamp: 2026-01-25 00:10:33.160327
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped 4 for 6 at pos 1
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}]

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


game_id: fca52145-f62d-4633-9d19-8f7852b61885
timestamp: 2026-01-25 00:10:33.166496
player_id: cpu_0
player_name: Sage
action: take_discard
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: took 6 from discard
visible_opponents_json:
{"Maya": [{"rank": "2", "suit": "hearts"}, {"rank": "3", "suit": "hearts"}], "Sofia": [{"rank": "2", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "K", "suit": "diamonds"}], "Kenji": [{"rank": "4", "suit": "hearts"}, {"rank": "K", "suit": "hearts"}, {"rank": "6", "suit": "clubs"}, {"rank": "4", "suit": "diamonds"}]}


game_id: fca52145-f62d-4633-9d19-8f7852b61885
timestamp: 2026-01-25 00:10:33.172653
player_id: cpu_0
player_name: Sage
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "K", "suit": "spades"}
decision_reason: swapped 6 for K at pos 0
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: fca52145-f62d-4633-9d19-8f7852b61885
timestamp: 2026-01-25 00:10:33.178888
player_id: cpu_1
player_name: Maya
action: take_discard
card_rank: K
card_suit: spades
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: took K from discard
visible_opponents_json:
{"Sage": [{"rank": "6", "suit": "spades"}, {"rank": "3", "suit": "spades"}, {"rank": "2", "suit": "spades"}, {"rank": "3", "suit": "diamonds"}, {"rank": "A", "suit": "diamonds"}], "Sofia": [{"rank": "2", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "K", "suit": "diamonds"}], "Kenji": [{"rank": "4", "suit": "hearts"}, {"rank": "K", "suit": "hearts"}, {"rank": "6", "suit": "clubs"}, {"rank": "4", "suit": "diamonds"}]}


game_id: fca52145-f62d-4633-9d19-8f7852b61885
timestamp: 2026-01-25 00:10:33.184689
player_id: cpu_1
player_name: Maya
action: swap
card_rank: K
card_suit: spades
discard_top_json: {"rank": "3", "suit": "hearts"}
decision_reason: swapped K for 3 at pos 5
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: fca52145-f62d-4633-9d19-8f7852b61885
timestamp: 2026-01-25 00:10:33.194129
player_id: cpu_2
player_name: Sofia
action: take_discard
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: fca52145-f62d-4633-9d19-8f7852b61885
timestamp: 2026-01-25 00:10:33.200505
player_id: cpu_2
player_name: Sofia
action: swap
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "3", "suit": "clubs"}
decision_reason: swapped 3 for 3 at pos 4
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: fca52145-f62d-4633-9d19-8f7852b61885
timestamp: 2026-01-25 00:10:33.206750
player_id: cpu_3
player_name: Kenji
action: take_discard
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}]

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


game_id: fca52145-f62d-4633-9d19-8f7852b61885
timestamp: 2026-01-25 00:10:33.212881
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 3 for 6 at pos 3
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}]

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


game_id: fca52145-f62d-4633-9d19-8f7852b61885
timestamp: 2026-01-25 00:10:33.219203
player_id: cpu_0
player_name: Sage
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: fca52145-f62d-4633-9d19-8f7852b61885
timestamp: 2026-01-25 00:10:33.225609
player_id: cpu_0
player_name: Sage
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped 6 for 5 at pos 3
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: fca52145-f62d-4633-9d19-8f7852b61885
timestamp: 2026-01-25 00:10:33.232240
player_id: cpu_1
player_name: Maya
action: take_discard
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: fca52145-f62d-4633-9d19-8f7852b61885
timestamp: 2026-01-25 00:10:33.238446
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped 5 for 5 at pos 0
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: fca52145-f62d-4633-9d19-8f7852b61885
timestamp: 2026-01-25 00:10:33.244732
player_id: cpu_2
player_name: Sofia
action: take_discard
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: fca52145-f62d-4633-9d19-8f7852b61885
timestamp: 2026-01-25 00:10:33.251248
player_id: cpu_2
player_name: Sofia
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: swapped 5 for 10 at pos 1
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: fca52145-f62d-4633-9d19-8f7852b61885
timestamp: 2026-01-25 00:10:33.257447
player_id: cpu_3
player_name: Kenji
action: draw_deck
card_rank: A
card_suit: spades
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}]

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


game_id: fca52145-f62d-4633-9d19-8f7852b61885
timestamp: 2026-01-25 00:10:33.263356
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: A
card_suit: spades
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: swapped A for 4 at pos 1
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}]

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


game_id: 8d562664-5b04-4c30-a266-b775bda8681d
timestamp: 2026-01-25 00:10:33.280968
player_id: cpu_0
player_name: Kenji
action: take_discard
card_rank: 7
card_suit: diamonds
decision_reason: took 7 from discard
hand_json:
[{"rank": "6", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}]

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


game_id: 8d562664-5b04-4c30-a266-b775bda8681d
timestamp: 2026-01-25 00:10:33.286913
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: swapped 7 for 9 at pos 2
hand_json:
[{"rank": "6", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}]

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


game_id: 8d562664-5b04-4c30-a266-b775bda8681d
timestamp: 2026-01-25 00:10:33.293008
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}]

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


game_id: 8d562664-5b04-4c30-a266-b775bda8681d
timestamp: 2026-01-25 00:10:33.299092
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: swapped 6 for 8 at pos 0
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}]

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


game_id: 8d562664-5b04-4c30-a266-b775bda8681d
timestamp: 2026-01-25 00:10:33.305331
player_id: cpu_2
player_name: Priya
action: draw_deck
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: 8d562664-5b04-4c30-a266-b775bda8681d
timestamp: 2026-01-25 00:10:33.311438
player_id: cpu_2
player_name: Priya
action: swap
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped 2 for 5 at pos 1
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: 8d562664-5b04-4c30-a266-b775bda8681d
timestamp: 2026-01-25 00:10:33.317117
player_id: cpu_3
player_name: River
action: take_discard
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": true}]

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


game_id: 8d562664-5b04-4c30-a266-b775bda8681d
timestamp: 2026-01-25 00:10:33.322860
player_id: cpu_3
player_name: River
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: swapped 5 for 10 at pos 5
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: 8d562664-5b04-4c30-a266-b775bda8681d
timestamp: 2026-01-25 00:10:33.328804
player_id: cpu_0
player_name: Kenji
action: draw_deck
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}]

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


game_id: 8d562664-5b04-4c30-a266-b775bda8681d
timestamp: 2026-01-25 00:10:33.334465
player_id: cpu_0
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 2
hand_json:
[{"rank": "6", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}]

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


game_id: 8d562664-5b04-4c30-a266-b775bda8681d
timestamp: 2026-01-25 00:10:33.340308
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}]

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


game_id: 8d562664-5b04-4c30-a266-b775bda8681d
timestamp: 2026-01-25 00:10:33.346286
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "3", "suit": "diamonds"}
decision_reason: swapped 7 for 3 at pos 1
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}]

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


game_id: 8d562664-5b04-4c30-a266-b775bda8681d
timestamp: 2026-01-25 00:10:33.351932
player_id: cpu_2
player_name: Priya
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": "9", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: 8d562664-5b04-4c30-a266-b775bda8681d
timestamp: 2026-01-25 00:10:33.358371
player_id: cpu_2
player_name: Priya
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: swapped 3 for 9 at pos 0
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: 8d562664-5b04-4c30-a266-b775bda8681d
timestamp: 2026-01-25 00:10:33.364882
player_id: cpu_3
player_name: River
action: draw_deck
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: 8d562664-5b04-4c30-a266-b775bda8681d
timestamp: 2026-01-25 00:10:33.370960
player_id: cpu_3
player_name: River
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: swapped 5 for J at pos 2
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: 8d562664-5b04-4c30-a266-b775bda8681d
timestamp: 2026-01-25 00:10:33.376847
player_id: cpu_0
player_name: Kenji
action: draw_deck
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}]

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


game_id: 8d562664-5b04-4c30-a266-b775bda8681d
timestamp: 2026-01-25 00:10:33.382877
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped A for 6 at pos 0
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}]

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


game_id: 8d562664-5b04-4c30-a266-b775bda8681d
timestamp: 2026-01-25 00:10:33.391044
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}]

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


game_id: 8d562664-5b04-4c30-a266-b775bda8681d
timestamp: 2026-01-25 00:10:33.397369
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: swapped 6 for Q at pos 3
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}]

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


game_id: 8d562664-5b04-4c30-a266-b775bda8681d
timestamp: 2026-01-25 00:10:33.403880
player_id: cpu_2
player_name: Priya
action: draw_deck
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: 8d562664-5b04-4c30-a266-b775bda8681d
timestamp: 2026-01-25 00:10:33.410500
player_id: cpu_2
player_name: Priya
action: swap
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "2", "suit": "spades"}
decision_reason: swapped 8 for 2 at pos 4
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: 8d562664-5b04-4c30-a266-b775bda8681d
timestamp: 2026-01-25 00:10:33.416303
player_id: cpu_3
player_name: River
action: take_discard
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: took 2 from discard
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: 8d562664-5b04-4c30-a266-b775bda8681d
timestamp: 2026-01-25 00:10:33.422078
player_id: cpu_3
player_name: River
action: swap
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped 2 for 5 at pos 2
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: 8d562664-5b04-4c30-a266-b775bda8681d
timestamp: 2026-01-25 00:10:33.427996
player_id: cpu_0
player_name: Kenji
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": "A", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}]

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


game_id: 8d562664-5b04-4c30-a266-b775bda8681d
timestamp: 2026-01-25 00:10:33.434048
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped 5 for 6 at pos 2
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}]

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


game_id: 8d562664-5b04-4c30-a266-b775bda8681d
timestamp: 2026-01-25 00:10:33.440098
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}]

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


game_id: 8d562664-5b04-4c30-a266-b775bda8681d
timestamp: 2026-01-25 00:10:33.448183
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 6 for 7 at pos 1
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}]

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


game_id: 8d562664-5b04-4c30-a266-b775bda8681d
timestamp: 2026-01-25 00:10:33.454609
player_id: cpu_2
player_name: Priya
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": "3", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: 8d562664-5b04-4c30-a266-b775bda8681d
timestamp: 2026-01-25 00:10:33.460577
player_id: cpu_2
player_name: Priya
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: swapped 7 for 8 at pos 4
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: 8d562664-5b04-4c30-a266-b775bda8681d
timestamp: 2026-01-25 00:10:33.466724
player_id: cpu_3
player_name: River
action: draw_deck
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: 8d562664-5b04-4c30-a266-b775bda8681d
timestamp: 2026-01-25 00:10:33.472755
player_id: cpu_3
player_name: River
action: swap
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped K for 5 at pos 5
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: 8d562664-5b04-4c30-a266-b775bda8681d
timestamp: 2026-01-25 00:10:33.478901
player_id: cpu_0
player_name: Kenji
action: take_discard
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}]

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


game_id: 8d562664-5b04-4c30-a266-b775bda8681d
timestamp: 2026-01-25 00:10:33.484811
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: swapped 5 for J at pos 5
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: 8d562664-5b04-4c30-a266-b775bda8681d
timestamp: 2026-01-25 00:10:33.490767
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: Q
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}]

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


game_id: 8d562664-5b04-4c30-a266-b775bda8681d
timestamp: 2026-01-25 00:10:33.503414
player_id: cpu_2
player_name: Priya
action: draw_deck
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: 8d562664-5b04-4c30-a266-b775bda8681d
timestamp: 2026-01-25 00:10:33.509805
player_id: cpu_2
player_name: Priya
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 3 for 7 at pos 4
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: 8d562664-5b04-4c30-a266-b775bda8681d
timestamp: 2026-01-25 00:10:33.516610
player_id: cpu_3
player_name: River
action: take_discard
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: 8d562664-5b04-4c30-a266-b775bda8681d
timestamp: 2026-01-25 00:10:33.522738
player_id: cpu_3
player_name: River
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: swapped 7 for 8 at pos 3
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: 8d562664-5b04-4c30-a266-b775bda8681d
timestamp: 2026-01-25 00:10:33.528725
player_id: cpu_0
player_name: Kenji
action: draw_deck
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: 8d562664-5b04-4c30-a266-b775bda8681d
timestamp: 2026-01-25 00:10:33.534892
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: swapped 7 for 9 at pos 4
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: 8d562664-5b04-4c30-a266-b775bda8681d
timestamp: 2026-01-25 00:10:33.541249
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Kenji": [{"rank": "A", "suit": "clubs"}, {"rank": "5", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}, {"rank": "7", "suit": "spades"}, {"rank": "5", "suit": "hearts"}], "Priya": [{"rank": "3", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}, {"rank": "2", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}], "River": [{"rank": "K", "suit": "hearts"}, {"rank": "2", "suit": "spades"}, {"rank": "7", "suit": "diamonds"}, {"rank": "K", "suit": "clubs"}]}


game_id: 8d562664-5b04-4c30-a266-b775bda8681d
timestamp: 2026-01-25 00:10:33.547616
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped 3 for 7 at pos 4
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}]

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


game_id: 8d562664-5b04-4c30-a266-b775bda8681d
timestamp: 2026-01-25 00:10:33.553676
player_id: cpu_2
player_name: Priya
action: take_discard
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: 8d562664-5b04-4c30-a266-b775bda8681d
timestamp: 2026-01-25 00:10:33.559674
player_id: cpu_2
player_name: Priya
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped 7 for 5 at pos 2
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: 8d562664-5b04-4c30-a266-b775bda8681d
timestamp: 2026-01-25 00:10:33.568445
player_id: cpu_3
player_name: River
action: take_discard
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: 8d562664-5b04-4c30-a266-b775bda8681d
timestamp: 2026-01-25 00:10:33.574702
player_id: cpu_3
player_name: River
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 5 for 7 at pos 3
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: 8d562664-5b04-4c30-a266-b775bda8681d
timestamp: 2026-01-25 00:10:33.581016
player_id: cpu_0
player_name: Kenji
action: take_discard
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: 8d562664-5b04-4c30-a266-b775bda8681d
timestamp: 2026-01-25 00:10:33.587031
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "3", "suit": "clubs"}
decision_reason: swapped 7 for 3 at pos 1
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: 8d562664-5b04-4c30-a266-b775bda8681d
timestamp: 2026-01-25 00:10:33.593085
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}]

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


game_id: 8d562664-5b04-4c30-a266-b775bda8681d
timestamp: 2026-01-25 00:10:33.599306
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped 3 for 6 at pos 0
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}]

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


game_id: 8d562664-5b04-4c30-a266-b775bda8681d
timestamp: 2026-01-25 00:10:33.605775
player_id: cpu_2
player_name: Priya
action: take_discard
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: 8d562664-5b04-4c30-a266-b775bda8681d
timestamp: 2026-01-25 00:10:33.611966
player_id: cpu_2
player_name: Priya
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped 6 for 7 at pos 2
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: 8d562664-5b04-4c30-a266-b775bda8681d
timestamp: 2026-01-25 00:10:33.618230
player_id: cpu_3
player_name: River
action: take_discard
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: 8d562664-5b04-4c30-a266-b775bda8681d
timestamp: 2026-01-25 00:10:33.624442
player_id: cpu_3
player_name: River
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped 7 for 5 at pos 0
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: 675c3a3e-3774-403e-853c-94c0b4f41dc1
timestamp: 2026-01-25 00:10:33.641446
player_id: cpu_0
player_name: River
action: take_discard
card_rank: A
card_suit: clubs
decision_reason: took A from discard
hand_json:
[{"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}]

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


game_id: 675c3a3e-3774-403e-853c-94c0b4f41dc1
timestamp: 2026-01-25 00:10:33.647834
player_id: cpu_0
player_name: River
action: swap
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: swapped A for Q at pos 4
hand_json:
[{"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}]

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


game_id: 675c3a3e-3774-403e-853c-94c0b4f41dc1
timestamp: 2026-01-25 00:10:33.653877
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: Q
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}]

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


game_id: 675c3a3e-3774-403e-853c-94c0b4f41dc1
timestamp: 2026-01-25 00:10:33.659842
player_id: cpu_1
player_name: Sage
action: swap
card_rank: Q
card_suit: diamonds
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: swapped Q for 4 at pos 2
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}]

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


game_id: 675c3a3e-3774-403e-853c-94c0b4f41dc1
timestamp: 2026-01-25 00:10:33.666294
player_id: cpu_2
player_name: Diego
action: take_discard
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "J", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"River": [{"rank": "5", "suit": "clubs"}, {"rank": "A", "suit": "clubs"}], "Sage": [{"rank": "6", "suit": "diamonds"}, {"rank": "Q", "suit": "diamonds"}, {"rank": "J", "suit": "clubs"}], "Priya": [{"rank": "10", "suit": "spades"}, {"rank": "K", "suit": "hearts"}]}


game_id: 675c3a3e-3774-403e-853c-94c0b4f41dc1
timestamp: 2026-01-25 00:10:33.672797
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: swapped 4 for 9 at pos 1
hand_json:
[{"rank": "J", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"River": [{"rank": "5", "suit": "clubs"}, {"rank": "A", "suit": "clubs"}], "Sage": [{"rank": "6", "suit": "diamonds"}, {"rank": "Q", "suit": "diamonds"}, {"rank": "J", "suit": "clubs"}], "Priya": [{"rank": "10", "suit": "spades"}, {"rank": "K", "suit": "hearts"}]}


game_id: 675c3a3e-3774-403e-853c-94c0b4f41dc1
timestamp: 2026-01-25 00:10:33.679709
player_id: cpu_3
player_name: Priya
action: draw_deck
card_rank: 8
card_suit: spades
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "10", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"River": [{"rank": "5", "suit": "clubs"}, {"rank": "A", "suit": "clubs"}], "Sage": [{"rank": "6", "suit": "diamonds"}, {"rank": "Q", "suit": "diamonds"}, {"rank": "J", "suit": "clubs"}], "Diego": [{"rank": "4", "suit": "hearts"}, {"rank": "5", "suit": "hearts"}]}


game_id: 675c3a3e-3774-403e-853c-94c0b4f41dc1
timestamp: 2026-01-25 00:10:33.685984
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 8
card_suit: spades
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: swapped 8 for 10 at pos 0
hand_json:
[{"rank": "8", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"River": [{"rank": "5", "suit": "clubs"}, {"rank": "A", "suit": "clubs"}], "Sage": [{"rank": "6", "suit": "diamonds"}, {"rank": "Q", "suit": "diamonds"}, {"rank": "J", "suit": "clubs"}], "Diego": [{"rank": "4", "suit": "hearts"}, {"rank": "5", "suit": "hearts"}]}


game_id: 675c3a3e-3774-403e-853c-94c0b4f41dc1
timestamp: 2026-01-25 00:10:33.692631
player_id: cpu_0
player_name: River
action: draw_deck
card_rank: 9
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}]

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


game_id: 675c3a3e-3774-403e-853c-94c0b4f41dc1
timestamp: 2026-01-25 00:10:33.705402
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: J
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}]

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


game_id: 675c3a3e-3774-403e-853c-94c0b4f41dc1
timestamp: 2026-01-25 00:10:33.711902
player_id: cpu_1
player_name: Sage
action: swap
card_rank: J
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped J for 6 at pos 1
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}]

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


game_id: 675c3a3e-3774-403e-853c-94c0b4f41dc1
timestamp: 2026-01-25 00:10:33.718379
player_id: cpu_2
player_name: Diego
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "J", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: 675c3a3e-3774-403e-853c-94c0b4f41dc1
timestamp: 2026-01-25 00:10:33.724684
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: swapped 6 for J at pos 0
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: 675c3a3e-3774-403e-853c-94c0b4f41dc1
timestamp: 2026-01-25 00:10:33.730783
player_id: cpu_3
player_name: Priya
action: draw_deck
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "8", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"River": [{"rank": "5", "suit": "clubs"}, {"rank": "A", "suit": "clubs"}], "Sage": [{"rank": "6", "suit": "diamonds"}, {"rank": "J", "suit": "diamonds"}, {"rank": "Q", "suit": "diamonds"}, {"rank": "J", "suit": "clubs"}], "Diego": [{"rank": "6", "suit": "clubs"}, {"rank": "4", "suit": "hearts"}, {"rank": "5", "suit": "hearts"}]}


game_id: 675c3a3e-3774-403e-853c-94c0b4f41dc1
timestamp: 2026-01-25 00:10:33.736972
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: swapped 2 for 8 at pos 0
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"River": [{"rank": "5", "suit": "clubs"}, {"rank": "A", "suit": "clubs"}], "Sage": [{"rank": "6", "suit": "diamonds"}, {"rank": "J", "suit": "diamonds"}, {"rank": "Q", "suit": "diamonds"}, {"rank": "J", "suit": "clubs"}], "Diego": [{"rank": "6", "suit": "clubs"}, {"rank": "4", "suit": "hearts"}, {"rank": "5", "suit": "hearts"}]}


game_id: 675c3a3e-3774-403e-853c-94c0b4f41dc1
timestamp: 2026-01-25 00:10:33.743277
player_id: cpu_0
player_name: River
action: draw_deck
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Sage": [{"rank": "6", "suit": "diamonds"}, {"rank": "J", "suit": "diamonds"}, {"rank": "Q", "suit": "diamonds"}, {"rank": "J", "suit": "clubs"}], "Diego": [{"rank": "6", "suit": "clubs"}, {"rank": "4", "suit": "hearts"}, {"rank": "5", "suit": "hearts"}], "Priya": [{"rank": "2", "suit": "spades"}, {"rank": "K", "suit": "hearts"}]}


game_id: 675c3a3e-3774-403e-853c-94c0b4f41dc1
timestamp: 2026-01-25 00:10:33.749995
player_id: cpu_0
player_name: River
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "2", "suit": "hearts"}
decision_reason: swapped 6 for 2 at pos 3
hand_json:
[{"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}]

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


game_id: 675c3a3e-3774-403e-853c-94c0b4f41dc1
timestamp: 2026-01-25 00:10:33.755993
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: Q
card_suit: hearts
discard_top_json: {"rank": "2", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}]

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


game_id: 675c3a3e-3774-403e-853c-94c0b4f41dc1
timestamp: 2026-01-25 00:10:33.762911
player_id: cpu_1
player_name: Sage
action: swap
card_rank: Q
card_suit: hearts
discard_top_json: {"rank": "4", "suit": "spades"}
decision_reason: swapped Q for 4 at pos 5
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": true}]

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


game_id: 675c3a3e-3774-403e-853c-94c0b4f41dc1
timestamp: 2026-01-25 00:10:33.768998
player_id: cpu_2
player_name: Diego
action: take_discard
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "2", "suit": "hearts"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: 675c3a3e-3774-403e-853c-94c0b4f41dc1
timestamp: 2026-01-25 00:10:33.775050
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "K", "suit": "diamonds"}
decision_reason: swapped 4 for K at pos 4
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: 675c3a3e-3774-403e-853c-94c0b4f41dc1
timestamp: 2026-01-25 00:10:33.781248
player_id: cpu_3
player_name: Priya
action: take_discard
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "2", "suit": "hearts"}
decision_reason: took K from discard
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: 675c3a3e-3774-403e-853c-94c0b4f41dc1
timestamp: 2026-01-25 00:10:33.787724
player_id: cpu_3
player_name: Priya
action: swap
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: swapped K for 9 at pos 3
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: 675c3a3e-3774-403e-853c-94c0b4f41dc1
timestamp: 2026-01-25 00:10:33.794236
player_id: cpu_0
player_name: River
action: draw_deck
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}]

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


game_id: 675c3a3e-3774-403e-853c-94c0b4f41dc1
timestamp: 2026-01-25 00:10:33.800504
player_id: cpu_0
player_name: River
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "3", "suit": "clubs"}
decision_reason: swapped 5 for 3 at pos 5
hand_json:
[{"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}]

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


game_id: 675c3a3e-3774-403e-853c-94c0b4f41dc1
timestamp: 2026-01-25 00:10:33.806890
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": true}]

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


game_id: 675c3a3e-3774-403e-853c-94c0b4f41dc1
timestamp: 2026-01-25 00:10:33.813367
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: swapped 3 for J at pos 1
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": true}]

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


game_id: 675c3a3e-3774-403e-853c-94c0b4f41dc1
timestamp: 2026-01-25 00:10:33.819923
player_id: cpu_2
player_name: Diego
action: draw_deck
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: 675c3a3e-3774-403e-853c-94c0b4f41dc1
timestamp: 2026-01-25 00:10:33.826283
player_id: cpu_2
player_name: Diego
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": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: 675c3a3e-3774-403e-853c-94c0b4f41dc1
timestamp: 2026-01-25 00:10:33.832420
player_id: cpu_3
player_name: Priya
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: 675c3a3e-3774-403e-853c-94c0b4f41dc1
timestamp: 2026-01-25 00:10:33.838815
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "3", "suit": "hearts"}
decision_reason: swapped 6 for 3 at pos 2
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: 675c3a3e-3774-403e-853c-94c0b4f41dc1
timestamp: 2026-01-25 00:10:33.845360
player_id: cpu_0
player_name: River
action: take_discard
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}]

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


game_id: 675c3a3e-3774-403e-853c-94c0b4f41dc1
timestamp: 2026-01-25 00:10:33.853464
player_id: cpu_0
player_name: River
action: swap
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped 3 for 6 at pos 3
hand_json:
[{"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}]

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


game_id: 675c3a3e-3774-403e-853c-94c0b4f41dc1
timestamp: 2026-01-25 00:10:33.859325
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": true}]

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


game_id: 675c3a3e-3774-403e-853c-94c0b4f41dc1
timestamp: 2026-01-25 00:10:33.865157
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "K", "suit": "spades"}
decision_reason: swapped 6 for K at pos 3
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": true}]

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


game_id: 675c3a3e-3774-403e-853c-94c0b4f41dc1
timestamp: 2026-01-25 00:10:33.871547
player_id: cpu_2
player_name: Diego
action: take_discard
card_rank: K
card_suit: spades
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: took K from discard
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: 675c3a3e-3774-403e-853c-94c0b4f41dc1
timestamp: 2026-01-25 00:10:33.877630
player_id: cpu_2
player_name: Diego
action: swap
card_rank: K
card_suit: spades
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped K for 5 at pos 5
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: 675c3a3e-3774-403e-853c-94c0b4f41dc1
timestamp: 2026-01-25 00:10:33.884028
player_id: cpu_3
player_name: Priya
action: take_discard
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: 675c3a3e-3774-403e-853c-94c0b4f41dc1
timestamp: 2026-01-25 00:10:33.890301
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 2
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: 675c3a3e-3774-403e-853c-94c0b4f41dc1
timestamp: 2026-01-25 00:10:33.896560
player_id: cpu_0
player_name: River
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": "8", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}]

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


game_id: 675c3a3e-3774-403e-853c-94c0b4f41dc1
timestamp: 2026-01-25 00:10:33.902715
player_id: cpu_0
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 0
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}]

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


game_id: e7e3c7d3-f929-4fd9-a734-b16b2430da72
timestamp: 2026-01-25 00:10:33.923542
player_id: cpu_0
player_name: Maya
action: take_discard
card_rank: 8
card_suit: spades
decision_reason: took 8 from discard
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}]

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


game_id: e7e3c7d3-f929-4fd9-a734-b16b2430da72
timestamp: 2026-01-25 00:10:33.929538
player_id: cpu_0
player_name: Maya
action: swap
card_rank: 8
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: swapped 8 for Q at pos 1
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}]

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


game_id: e7e3c7d3-f929-4fd9-a734-b16b2430da72
timestamp: 2026-01-25 00:10:33.935737
player_id: cpu_1
player_name: Diego
action: draw_deck
card_rank: 8
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}]

visible_opponents_json:
{"Maya": [{"rank": "8", "suit": "spades"}, {"rank": "7", "suit": "clubs"}], "Sofia": [{"rank": "4", "suit": "clubs"}, {"rank": "K", "suit": "spades"}], "Priya": [{"rank": "Q", "suit": "clubs"}, {"rank": "6", "suit": "diamonds"}]}


game_id: e7e3c7d3-f929-4fd9-a734-b16b2430da72
timestamp: 2026-01-25 00:10:33.948297
player_id: cpu_2
player_name: Sofia
action: draw_deck
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: e7e3c7d3-f929-4fd9-a734-b16b2430da72
timestamp: 2026-01-25 00:10:33.954782
player_id: cpu_2
player_name: Sofia
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: swapped 3 for Q at pos 2
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: e7e3c7d3-f929-4fd9-a734-b16b2430da72
timestamp: 2026-01-25 00:10:33.960723
player_id: cpu_3
player_name: Priya
action: take_discard
card_rank: Q
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: took Q from discard
hand_json:
[{"rank": "Q", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}]

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


game_id: e7e3c7d3-f929-4fd9-a734-b16b2430da72
timestamp: 2026-01-25 00:10:33.966459
player_id: cpu_3
player_name: Priya
action: swap
card_rank: Q
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: swapped Q for 10 at pos 3
hand_json:
[{"rank": "Q", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}]

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


game_id: e7e3c7d3-f929-4fd9-a734-b16b2430da72
timestamp: 2026-01-25 00:10:33.972327
player_id: cpu_0
player_name: Maya
action: draw_deck
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}]

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


game_id: e7e3c7d3-f929-4fd9-a734-b16b2430da72
timestamp: 2026-01-25 00:10:33.978388
player_id: cpu_0
player_name: Maya
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: swapped 5 for 8 at pos 1
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}]

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


game_id: e7e3c7d3-f929-4fd9-a734-b16b2430da72
timestamp: 2026-01-25 00:10:33.984098
player_id: cpu_1
player_name: Diego
action: draw_deck
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}]

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


game_id: e7e3c7d3-f929-4fd9-a734-b16b2430da72
timestamp: 2026-01-25 00:10:33.990322
player_id: cpu_1
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": "3", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}]

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


game_id: e7e3c7d3-f929-4fd9-a734-b16b2430da72
timestamp: 2026-01-25 00:10:33.996777
player_id: cpu_2
player_name: Sofia
action: draw_deck
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: e7e3c7d3-f929-4fd9-a734-b16b2430da72
timestamp: 2026-01-25 00:10:34.002975
player_id: cpu_2
player_name: Sofia
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped 4 for 6 at pos 3
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: e7e3c7d3-f929-4fd9-a734-b16b2430da72
timestamp: 2026-01-25 00:10:34.009048
player_id: cpu_3
player_name: Priya
action: take_discard
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "Q", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}]

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


game_id: e7e3c7d3-f929-4fd9-a734-b16b2430da72
timestamp: 2026-01-25 00:10:34.015175
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "A", "suit": "clubs"}
decision_reason: swapped 6 for A at pos 1
hand_json:
[{"rank": "Q", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}]

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


game_id: e7e3c7d3-f929-4fd9-a734-b16b2430da72
timestamp: 2026-01-25 00:10:34.021291
player_id: cpu_0
player_name: Maya
action: take_discard
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: took A from discard
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}]

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


game_id: e7e3c7d3-f929-4fd9-a734-b16b2430da72
timestamp: 2026-01-25 00:10:34.027149
player_id: cpu_0
player_name: Maya
action: swap
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped A for 7 at pos 3
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}]

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


game_id: e7e3c7d3-f929-4fd9-a734-b16b2430da72
timestamp: 2026-01-25 00:10:34.033042
player_id: cpu_1
player_name: Diego
action: take_discard
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}]

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


game_id: e7e3c7d3-f929-4fd9-a734-b16b2430da72
timestamp: 2026-01-25 00:10:34.039166
player_id: cpu_1
player_name: Diego
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "2", "suit": "clubs"}
decision_reason: swapped 7 for 2 at pos 4
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}]

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


game_id: e7e3c7d3-f929-4fd9-a734-b16b2430da72
timestamp: 2026-01-25 00:10:34.045231
player_id: cpu_2
player_name: Sofia
action: take_discard
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: took 2 from discard
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: e7e3c7d3-f929-4fd9-a734-b16b2430da72
timestamp: 2026-01-25 00:10:34.051105
player_id: cpu_2
player_name: Sofia
action: swap
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: swapped 2 for 4 at pos 0
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: e7e3c7d3-f929-4fd9-a734-b16b2430da72
timestamp: 2026-01-25 00:10:34.056843
player_id: cpu_3
player_name: Priya
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": "Q", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}]

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


game_id: e7e3c7d3-f929-4fd9-a734-b16b2430da72
timestamp: 2026-01-25 00:10:34.062990
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: swapped 4 for Q at pos 0
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}]

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


game_id: e7e3c7d3-f929-4fd9-a734-b16b2430da72
timestamp: 2026-01-25 00:10:34.069449
player_id: cpu_0
player_name: Maya
action: draw_deck
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}]

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


game_id: e7e3c7d3-f929-4fd9-a734-b16b2430da72
timestamp: 2026-01-25 00:10:34.075968
player_id: cpu_0
player_name: Maya
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: swapped A for J at pos 0
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}]

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


game_id: e7e3c7d3-f929-4fd9-a734-b16b2430da72
timestamp: 2026-01-25 00:10:34.082228
player_id: cpu_1
player_name: Diego
action: draw_deck
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}]

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


game_id: e7e3c7d3-f929-4fd9-a734-b16b2430da72
timestamp: 2026-01-25 00:10:34.088344
player_id: cpu_1
player_name: Diego
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped 6 for 7 at pos 4
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}]

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


game_id: e7e3c7d3-f929-4fd9-a734-b16b2430da72
timestamp: 2026-01-25 00:10:34.094630
player_id: cpu_2
player_name: Sofia
action: take_discard
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: e7e3c7d3-f929-4fd9-a734-b16b2430da72
timestamp: 2026-01-25 00:10:34.101138
player_id: cpu_2
player_name: Sofia
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "3", "suit": "spades"}
decision_reason: swapped 7 for 3 at pos 4
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: e7e3c7d3-f929-4fd9-a734-b16b2430da72
timestamp: 2026-01-25 00:10:34.107151
player_id: cpu_3
player_name: Priya
action: take_discard
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}]

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


game_id: e7e3c7d3-f929-4fd9-a734-b16b2430da72
timestamp: 2026-01-25 00:10:34.113211
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: swapped 3 for Q at pos 3
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}]

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


game_id: e7e3c7d3-f929-4fd9-a734-b16b2430da72
timestamp: 2026-01-25 00:10:34.119384
player_id: cpu_0
player_name: Maya
action: draw_deck
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}]

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


game_id: e7e3c7d3-f929-4fd9-a734-b16b2430da72
timestamp: 2026-01-25 00:10:34.125729
player_id: cpu_0
player_name: Maya
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": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}]

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


game_id: e7e3c7d3-f929-4fd9-a734-b16b2430da72
timestamp: 2026-01-25 00:10:34.132316
player_id: cpu_1
player_name: Diego
action: draw_deck
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}]

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


game_id: e7e3c7d3-f929-4fd9-a734-b16b2430da72
timestamp: 2026-01-25 00:10:34.138896
player_id: cpu_1
player_name: Diego
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped 5 for 6 at pos 2
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}]

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


game_id: e7e3c7d3-f929-4fd9-a734-b16b2430da72
timestamp: 2026-01-25 00:10:34.145435
player_id: cpu_2
player_name: Sofia
action: take_discard
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: e7e3c7d3-f929-4fd9-a734-b16b2430da72
timestamp: 2026-01-25 00:10:34.151936
player_id: cpu_2
player_name: Sofia
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "2", "suit": "hearts"}
decision_reason: swapped 6 for 2 at pos 1
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: e7e3c7d3-f929-4fd9-a734-b16b2430da72
timestamp: 2026-01-25 00:10:34.158382
player_id: cpu_3
player_name: Priya
action: take_discard
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: took 2 from discard
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}]

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


game_id: e7e3c7d3-f929-4fd9-a734-b16b2430da72
timestamp: 2026-01-25 00:10:34.164885
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped 2 for 6 at pos 1
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}]

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


game_id: e7e3c7d3-f929-4fd9-a734-b16b2430da72
timestamp: 2026-01-25 00:10:34.171359
player_id: cpu_0
player_name: Maya
action: take_discard
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}]

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


game_id: e7e3c7d3-f929-4fd9-a734-b16b2430da72
timestamp: 2026-01-25 00:10:34.178051
player_id: cpu_0
player_name: Maya
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped 6 for 7 at pos 5
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}]

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


game_id: e7e3c7d3-f929-4fd9-a734-b16b2430da72
timestamp: 2026-01-25 00:10:34.184450
player_id: cpu_1
player_name: Diego
action: take_discard
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}]

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


game_id: e7e3c7d3-f929-4fd9-a734-b16b2430da72
timestamp: 2026-01-25 00:10:34.191031
player_id: cpu_1
player_name: Diego
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "3", "suit": "diamonds"}
decision_reason: swapped 7 for 3 at pos 0
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}]

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


game_id: be5812b2-4357-47f6-a64c-22a9d19758e1
timestamp: 2026-01-25 00:10:34.209215
player_id: cpu_0
player_name: Sofia
action: take_discard
card_rank: 3
card_suit: clubs
decision_reason: took 3 from discard
hand_json:
[{"rank": "5", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: be5812b2-4357-47f6-a64c-22a9d19758e1
timestamp: 2026-01-25 00:10:34.215790
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: swapped 3 for 10 at pos 4
hand_json:
[{"rank": "5", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: be5812b2-4357-47f6-a64c-22a9d19758e1
timestamp: 2026-01-25 00:10:34.221970
player_id: cpu_1
player_name: River
action: draw_deck
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": true}]

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


game_id: be5812b2-4357-47f6-a64c-22a9d19758e1
timestamp: 2026-01-25 00:10:34.227972
player_id: cpu_1
player_name: River
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: swapped 7 for Q at pos 5
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}]

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


game_id: be5812b2-4357-47f6-a64c-22a9d19758e1
timestamp: 2026-01-25 00:10:34.234240
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: be5812b2-4357-47f6-a64c-22a9d19758e1
timestamp: 2026-01-25 00:10:34.240462
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "3", "suit": "diamonds"}
decision_reason: swapped 2 for 3 at pos 0
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: be5812b2-4357-47f6-a64c-22a9d19758e1
timestamp: 2026-01-25 00:10:34.247179
player_id: cpu_3
player_name: Marcus
action: take_discard
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}]

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


game_id: be5812b2-4357-47f6-a64c-22a9d19758e1
timestamp: 2026-01-25 00:10:34.253320
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "A", "suit": "hearts"}
decision_reason: swapped 3 for A at pos 1
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}]

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


game_id: be5812b2-4357-47f6-a64c-22a9d19758e1
timestamp: 2026-01-25 00:10:34.259381
player_id: cpu_0
player_name: Sofia
action: take_discard
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took A from discard
hand_json:
[{"rank": "5", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: be5812b2-4357-47f6-a64c-22a9d19758e1
timestamp: 2026-01-25 00:10:34.267575
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped A for 5 at pos 0
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: be5812b2-4357-47f6-a64c-22a9d19758e1
timestamp: 2026-01-25 00:10:34.274183
player_id: cpu_1
player_name: River
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": "4", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}]

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


game_id: be5812b2-4357-47f6-a64c-22a9d19758e1
timestamp: 2026-01-25 00:10:34.280334
player_id: cpu_1
player_name: River
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 5 for 7 at pos 5
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: be5812b2-4357-47f6-a64c-22a9d19758e1
timestamp: 2026-01-25 00:10:34.286397
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: K
card_suit: spades
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: be5812b2-4357-47f6-a64c-22a9d19758e1
timestamp: 2026-01-25 00:10:34.292333
player_id: cpu_2
player_name: Sage
action: swap
card_rank: K
card_suit: spades
discard_top_json: {"rank": "3", "suit": "spades"}
decision_reason: swapped K for 3 at pos 5
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: be5812b2-4357-47f6-a64c-22a9d19758e1
timestamp: 2026-01-25 00:10:34.298302
player_id: cpu_3
player_name: Marcus
action: take_discard
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}]

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


game_id: be5812b2-4357-47f6-a64c-22a9d19758e1
timestamp: 2026-01-25 00:10:34.304219
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped 3 for 7 at pos 4
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}]

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


game_id: be5812b2-4357-47f6-a64c-22a9d19758e1
timestamp: 2026-01-25 00:10:34.310339
player_id: cpu_0
player_name: Sofia
action: take_discard
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: be5812b2-4357-47f6-a64c-22a9d19758e1
timestamp: 2026-01-25 00:10:34.316146
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: swapped 7 for 10 at pos 3
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: be5812b2-4357-47f6-a64c-22a9d19758e1
timestamp: 2026-01-25 00:10:34.322572
player_id: cpu_1
player_name: River
action: draw_deck
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: be5812b2-4357-47f6-a64c-22a9d19758e1
timestamp: 2026-01-25 00:10:34.328574
player_id: cpu_1
player_name: River
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: swapped 6 for 8 at pos 3
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: be5812b2-4357-47f6-a64c-22a9d19758e1
timestamp: 2026-01-25 00:10:34.334784
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: J
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: be5812b2-4357-47f6-a64c-22a9d19758e1
timestamp: 2026-01-25 00:10:34.347424
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}]

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


game_id: be5812b2-4357-47f6-a64c-22a9d19758e1
timestamp: 2026-01-25 00:10:34.353906
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped 4 for 7 at pos 5
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: be5812b2-4357-47f6-a64c-22a9d19758e1
timestamp: 2026-01-25 00:10:34.359981
player_id: cpu_0
player_name: Sofia
action: take_discard
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: be5812b2-4357-47f6-a64c-22a9d19758e1
timestamp: 2026-01-25 00:10:34.366219
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "K", "suit": "hearts"}
decision_reason: swapped 7 for K at pos 1
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: be5812b2-4357-47f6-a64c-22a9d19758e1
timestamp: 2026-01-25 00:10:34.372198
player_id: cpu_1
player_name: River
action: take_discard
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: took K from discard
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: be5812b2-4357-47f6-a64c-22a9d19758e1
timestamp: 2026-01-25 00:10:34.377921
player_id: cpu_1
player_name: River
action: swap
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped K for 6 at pos 3
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: be5812b2-4357-47f6-a64c-22a9d19758e1
timestamp: 2026-01-25 00:10:34.383562
player_id: cpu_2
player_name: Sage
action: take_discard
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: took 6 from discard
visible_opponents_json:
{"Sofia": [{"rank": "A", "suit": "hearts"}, {"rank": "7", "suit": "clubs"}, {"rank": "7", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}], "River": [{"rank": "4", "suit": "spades"}, {"rank": "K", "suit": "hearts"}, {"rank": "5", "suit": "spades"}], "Marcus": [{"rank": "3", "suit": "diamonds"}, {"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}, {"rank": "4", "suit": "clubs"}]}


game_id: be5812b2-4357-47f6-a64c-22a9d19758e1
timestamp: 2026-01-25 00:10:34.389889
player_id: cpu_2
player_name: Sage
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": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: be5812b2-4357-47f6-a64c-22a9d19758e1
timestamp: 2026-01-25 00:10:34.396093
player_id: cpu_3
player_name: Marcus
action: take_discard
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: be5812b2-4357-47f6-a64c-22a9d19758e1
timestamp: 2026-01-25 00:10:34.402445
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "2", "suit": "clubs"}
decision_reason: swapped 4 for 2 at pos 0
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: be5812b2-4357-47f6-a64c-22a9d19758e1
timestamp: 2026-01-25 00:10:34.409032
player_id: cpu_0
player_name: Sofia
action: take_discard
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: took 2 from discard
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: be5812b2-4357-47f6-a64c-22a9d19758e1
timestamp: 2026-01-25 00:10:34.416137
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped 2 for 7 at pos 1
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: be5812b2-4357-47f6-a64c-22a9d19758e1
timestamp: 2026-01-25 00:10:34.422400
player_id: cpu_1
player_name: River
action: take_discard
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: be5812b2-4357-47f6-a64c-22a9d19758e1
timestamp: 2026-01-25 00:10:34.428271
player_id: cpu_1
player_name: River
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: swapped 7 for 9 at pos 1
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: be5812b2-4357-47f6-a64c-22a9d19758e1
timestamp: 2026-01-25 00:10:34.434476
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: be5812b2-4357-47f6-a64c-22a9d19758e1
timestamp: 2026-01-25 00:10:34.440507
player_id: cpu_2
player_name: Sage
action: swap
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped A for 6 at pos 1
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: b5f31aa2-1fbc-463e-859d-13630ccc4036
timestamp: 2026-01-25 00:10:34.457308
player_id: cpu_0
player_name: River
action: draw_deck
card_rank: 8
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: b5f31aa2-1fbc-463e-859d-13630ccc4036
timestamp: 2026-01-25 00:10:34.463379
player_id: cpu_0
player_name: River
action: swap
card_rank: 8
card_suit: spades
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: swapped 8 for J at pos 1
hand_json:
[{"rank": "J", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: b5f31aa2-1fbc-463e-859d-13630ccc4036
timestamp: 2026-01-25 00:10:34.469845
player_id: cpu_1
player_name: Sofia
action: draw_deck
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}]

visible_opponents_json:
{"River": [{"rank": "8", "suit": "spades"}, {"rank": "K", "suit": "spades"}], "Marcus": [{"rank": "9", "suit": "spades"}, {"rank": "J", "suit": "diamonds"}], "Diego": [{"rank": "10", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}]}


game_id: b5f31aa2-1fbc-463e-859d-13630ccc4036
timestamp: 2026-01-25 00:10:34.482213
player_id: cpu_2
player_name: Marcus
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": "9", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}]

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


game_id: b5f31aa2-1fbc-463e-859d-13630ccc4036
timestamp: 2026-01-25 00:10:34.488381
player_id: cpu_2
player_name: Marcus
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: swapped 6 for J at pos 4
hand_json:
[{"rank": "9", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}]

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


game_id: b5f31aa2-1fbc-463e-859d-13630ccc4036
timestamp: 2026-01-25 00:10:34.494304
player_id: cpu_3
player_name: Diego
action: draw_deck
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "10", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}]

visible_opponents_json:
{"River": [{"rank": "8", "suit": "spades"}, {"rank": "K", "suit": "spades"}], "Sofia": [{"rank": "5", "suit": "clubs"}, {"rank": "4", "suit": "spades"}], "Marcus": [{"rank": "9", "suit": "spades"}, {"rank": "6", "suit": "clubs"}]}


game_id: b5f31aa2-1fbc-463e-859d-13630ccc4036
timestamp: 2026-01-25 00:10:34.500522
player_id: cpu_3
player_name: Diego
action: swap
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: swapped K for 10 at pos 0
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}]

visible_opponents_json:
{"River": [{"rank": "8", "suit": "spades"}, {"rank": "K", "suit": "spades"}], "Sofia": [{"rank": "5", "suit": "clubs"}, {"rank": "4", "suit": "spades"}], "Marcus": [{"rank": "9", "suit": "spades"}, {"rank": "6", "suit": "clubs"}]}


game_id: b5f31aa2-1fbc-463e-859d-13630ccc4036
timestamp: 2026-01-25 00:10:34.506784
player_id: cpu_0
player_name: River
action: draw_deck
card_rank: 8
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: b5f31aa2-1fbc-463e-859d-13630ccc4036
timestamp: 2026-01-25 00:10:34.513314
player_id: cpu_0
player_name: River
action: swap
card_rank: 8
card_suit: clubs
discard_top_json: {"rank": "A", "suit": "spades"}
decision_reason: swapped 8 for A at pos 4
hand_json:
[{"rank": "J", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: b5f31aa2-1fbc-463e-859d-13630ccc4036
timestamp: 2026-01-25 00:10:34.519564
player_id: cpu_1
player_name: Sofia
action: take_discard
card_rank: A
card_suit: spades
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: took A from discard
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}]

visible_opponents_json:
{"River": [{"rank": "8", "suit": "spades"}, {"rank": "8", "suit": "clubs"}, {"rank": "K", "suit": "spades"}], "Marcus": [{"rank": "9", "suit": "spades"}, {"rank": "6", "suit": "clubs"}], "Diego": [{"rank": "K", "suit": "hearts"}, {"rank": "2", "suit": "spades"}]}


game_id: b5f31aa2-1fbc-463e-859d-13630ccc4036
timestamp: 2026-01-25 00:10:34.525334
player_id: cpu_1
player_name: Sofia
action: swap
card_rank: A
card_suit: spades
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped A for 5 at pos 1
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}]

visible_opponents_json:
{"River": [{"rank": "8", "suit": "spades"}, {"rank": "8", "suit": "clubs"}, {"rank": "K", "suit": "spades"}], "Marcus": [{"rank": "9", "suit": "spades"}, {"rank": "6", "suit": "clubs"}], "Diego": [{"rank": "K", "suit": "hearts"}, {"rank": "2", "suit": "spades"}]}


game_id: b5f31aa2-1fbc-463e-859d-13630ccc4036
timestamp: 2026-01-25 00:10:34.531656
player_id: cpu_2
player_name: Marcus
action: take_discard
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "9", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}]

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


game_id: b5f31aa2-1fbc-463e-859d-13630ccc4036
timestamp: 2026-01-25 00:10:34.538430
player_id: cpu_2
player_name: Marcus
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: swapped 5 for 9 at pos 0
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}]

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


game_id: b5f31aa2-1fbc-463e-859d-13630ccc4036
timestamp: 2026-01-25 00:10:34.545351
player_id: cpu_3
player_name: Diego
action: draw_deck
card_rank: 9
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}]

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


game_id: b5f31aa2-1fbc-463e-859d-13630ccc4036
timestamp: 2026-01-25 00:10:34.558061
player_id: cpu_0
player_name: River
action: draw_deck
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: b5f31aa2-1fbc-463e-859d-13630ccc4036
timestamp: 2026-01-25 00:10:34.564341
player_id: cpu_0
player_name: River
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: swapped 4 for 8 at pos 1
hand_json:
[{"rank": "J", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: b5f31aa2-1fbc-463e-859d-13630ccc4036
timestamp: 2026-01-25 00:10:34.570780
player_id: cpu_1
player_name: Sofia
action: draw_deck
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: b5f31aa2-1fbc-463e-859d-13630ccc4036
timestamp: 2026-01-25 00:10:34.576965
player_id: cpu_1
player_name: Sofia
action: swap
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: swapped A for 4 at pos 4
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: b5f31aa2-1fbc-463e-859d-13630ccc4036
timestamp: 2026-01-25 00:10:34.583274
player_id: cpu_2
player_name: Marcus
action: take_discard
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}]

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


game_id: b5f31aa2-1fbc-463e-859d-13630ccc4036
timestamp: 2026-01-25 00:10:34.589691
player_id: cpu_2
player_name: Marcus
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 4 for 6 at pos 4
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}]

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


game_id: b5f31aa2-1fbc-463e-859d-13630ccc4036
timestamp: 2026-01-25 00:10:34.595670
player_id: cpu_3
player_name: Diego
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: took 6 from discard
visible_opponents_json:
{"River": [{"rank": "4", "suit": "hearts"}, {"rank": "8", "suit": "clubs"}, {"rank": "K", "suit": "spades"}], "Sofia": [{"rank": "A", "suit": "spades"}, {"rank": "A", "suit": "clubs"}, {"rank": "4", "suit": "spades"}], "Marcus": [{"rank": "5", "suit": "clubs"}, {"rank": "4", "suit": "clubs"}]}


game_id: b5f31aa2-1fbc-463e-859d-13630ccc4036
timestamp: 2026-01-25 00:10:34.602191
player_id: cpu_3
player_name: Diego
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "2", "suit": "diamonds"}
decision_reason: swapped 6 for 2 at pos 1
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}]

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


game_id: b5f31aa2-1fbc-463e-859d-13630ccc4036
timestamp: 2026-01-25 00:10:34.608666
player_id: cpu_0
player_name: River
action: take_discard
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: took 2 from discard
hand_json:
[{"rank": "J", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: b5f31aa2-1fbc-463e-859d-13630ccc4036
timestamp: 2026-01-25 00:10:34.615430
player_id: cpu_0
player_name: River
action: swap
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: swapped 2 for 8 at pos 4
hand_json:
[{"rank": "J", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: b5f31aa2-1fbc-463e-859d-13630ccc4036
timestamp: 2026-01-25 00:10:34.621657
player_id: cpu_1
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": "7", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: b5f31aa2-1fbc-463e-859d-13630ccc4036
timestamp: 2026-01-25 00:10:34.627518
player_id: cpu_1
player_name: Sofia
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "4", "suit": "spades"}
decision_reason: swapped A for 4 at pos 5
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: b5f31aa2-1fbc-463e-859d-13630ccc4036
timestamp: 2026-01-25 00:10:34.633319
player_id: cpu_2
player_name: Marcus
action: take_discard
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}]

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


game_id: b5f31aa2-1fbc-463e-859d-13630ccc4036
timestamp: 2026-01-25 00:10:34.639484
player_id: cpu_2
player_name: Marcus
action: swap
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: swapped 4 for 4 at pos 1
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}]

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


game_id: b5f31aa2-1fbc-463e-859d-13630ccc4036
timestamp: 2026-01-25 00:10:34.645522
player_id: cpu_3
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
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}]

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


game_id: b5f31aa2-1fbc-463e-859d-13630ccc4036
timestamp: 2026-01-25 00:10:34.652377
player_id: cpu_3
player_name: Diego
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 4 for 6 at pos 1
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}]

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


game_id: b5f31aa2-1fbc-463e-859d-13630ccc4036
timestamp: 2026-01-25 00:10:34.658491
player_id: cpu_0
player_name: River
action: draw_deck
card_rank: Q
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: b5f31aa2-1fbc-463e-859d-13630ccc4036
timestamp: 2026-01-25 00:10:34.666633
player_id: cpu_0
player_name: River
action: swap
card_rank: Q
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: swapped Q for J at pos 0
hand_json:
[{"rank": "Q", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: b5f31aa2-1fbc-463e-859d-13630ccc4036
timestamp: 2026-01-25 00:10:34.672840
player_id: cpu_1
player_name: Sofia
action: draw_deck
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: b5f31aa2-1fbc-463e-859d-13630ccc4036
timestamp: 2026-01-25 00:10:34.678807
player_id: cpu_1
player_name: Sofia
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "3", "suit": "hearts"}
decision_reason: swapped 6 for 3 at pos 3
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: b5f31aa2-1fbc-463e-859d-13630ccc4036
timestamp: 2026-01-25 00:10:34.684462
player_id: cpu_2
player_name: Marcus
action: take_discard
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}]

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


game_id: b5f31aa2-1fbc-463e-859d-13630ccc4036
timestamp: 2026-01-25 00:10:34.690525
player_id: cpu_2
player_name: Marcus
action: swap
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped 3 for 5 at pos 0
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}]

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


game_id: b5f31aa2-1fbc-463e-859d-13630ccc4036
timestamp: 2026-01-25 00:10:34.696759
player_id: cpu_3
player_name: Diego
action: take_discard
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}]

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


game_id: b5f31aa2-1fbc-463e-859d-13630ccc4036
timestamp: 2026-01-25 00:10:34.702854
player_id: cpu_3
player_name: Diego
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "K", "suit": "clubs"}
decision_reason: swapped 5 for K at pos 5
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: b5f31aa2-1fbc-463e-859d-13630ccc4036
timestamp: 2026-01-25 00:10:34.709011
player_id: cpu_0
player_name: River
action: take_discard
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: took K from discard
hand_json:
[{"rank": "Q", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: b5f31aa2-1fbc-463e-859d-13630ccc4036
timestamp: 2026-01-25 00:10:34.715011
player_id: cpu_0
player_name: River
action: swap
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: swapped K for Q at pos 0
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: b5f31aa2-1fbc-463e-859d-13630ccc4036
timestamp: 2026-01-25 00:10:34.720940
player_id: cpu_1
player_name: Sofia
action: draw_deck
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: b5f31aa2-1fbc-463e-859d-13630ccc4036
timestamp: 2026-01-25 00:10:34.727639
player_id: cpu_1
player_name: Sofia
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped 6 for 7 at pos 0
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: b5f31aa2-1fbc-463e-859d-13630ccc4036
timestamp: 2026-01-25 00:10:34.733810
player_id: cpu_2
player_name: Marcus
action: take_discard
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}]

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


game_id: b5f31aa2-1fbc-463e-859d-13630ccc4036
timestamp: 2026-01-25 00:10:34.740324
player_id: cpu_2
player_name: Marcus
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: swapped 7 for 9 at pos 3
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}]

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


game_id: b5f31aa2-1fbc-463e-859d-13630ccc4036
timestamp: 2026-01-25 00:10:34.746697
player_id: cpu_3
player_name: Diego
action: draw_deck
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: b5f31aa2-1fbc-463e-859d-13630ccc4036
timestamp: 2026-01-25 00:10:34.753147
player_id: cpu_3
player_name: Diego
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: swapped 5 for 8 at pos 2
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: b5f31aa2-1fbc-463e-859d-13630ccc4036
timestamp: 2026-01-25 00:10:34.759672
player_id: cpu_0
player_name: River
action: draw_deck
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: b5f31aa2-1fbc-463e-859d-13630ccc4036
timestamp: 2026-01-25 00:10:34.765820
player_id: cpu_0
player_name: River
action: swap
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: swapped K for 4 at pos 1
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: b5f31aa2-1fbc-463e-859d-13630ccc4036
timestamp: 2026-01-25 00:10:34.772393
player_id: cpu_1
player_name: Sofia
action: take_discard
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: b5f31aa2-1fbc-463e-859d-13630ccc4036
timestamp: 2026-01-25 00:10:34.778707
player_id: cpu_1
player_name: Sofia
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped 4 for 6 at pos 0
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: b5f31aa2-1fbc-463e-859d-13630ccc4036
timestamp: 2026-01-25 00:10:34.785647
player_id: cpu_2
player_name: Marcus
action: take_discard
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}]

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


game_id: b5f31aa2-1fbc-463e-859d-13630ccc4036
timestamp: 2026-01-25 00:10:34.791645
player_id: cpu_2
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 3
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}]

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


game_id: b5f31aa2-1fbc-463e-859d-13630ccc4036
timestamp: 2026-01-25 00:10:34.797561
player_id: cpu_3
player_name: Diego
action: take_discard
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: b5f31aa2-1fbc-463e-859d-13630ccc4036
timestamp: 2026-01-25 00:10:34.803467
player_id: cpu_3
player_name: Diego
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: swapped 7 for 10 at pos 3
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: b5f31aa2-1fbc-463e-859d-13630ccc4036
timestamp: 2026-01-25 00:10:34.809532
player_id: cpu_0
player_name: River
action: draw_deck
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: b5f31aa2-1fbc-463e-859d-13630ccc4036
timestamp: 2026-01-25 00:10:34.816496
player_id: cpu_0
player_name: River
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: swapped 3 for J at pos 2
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: b5f31aa2-1fbc-463e-859d-13630ccc4036
timestamp: 2026-01-25 00:10:34.822489
player_id: cpu_1
player_name: Sofia
action: draw_deck
card_rank: 9
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: b5f31aa2-1fbc-463e-859d-13630ccc4036
timestamp: 2026-01-25 00:10:34.834305
player_id: cpu_2
player_name: Marcus
action: draw_deck
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}]

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


game_id: b5f31aa2-1fbc-463e-859d-13630ccc4036
timestamp: 2026-01-25 00:10:34.840636
player_id: cpu_2
player_name: Marcus
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped 3 for 6 at pos 3
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


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

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


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

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


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

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


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

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


game_id: a2ab0479-3b71-420c-8ea9-d83371b1a059
timestamp: 2026-01-25 00:10:34.881949
player_id: cpu_2
player_name: Priya
action: draw_deck
card_rank: 10
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}]

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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


game_id: a2ab0479-3b71-420c-8ea9-d83371b1a059
timestamp: 2026-01-25 00:10:34.969102
player_id: cpu_1
player_name: Sofia
action: draw_deck
card_rank: J
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Diego": [{"rank": "5", "suit": "clubs"}, {"rank": "A", "suit": "spades"}, {"rank": "5", "suit": "spades"}], "Priya": [{"rank": "3", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}], "Maya": [{"rank": "4", "suit": "spades"}, {"rank": "A", "suit": "clubs"}]}


game_id: a2ab0479-3b71-420c-8ea9-d83371b1a059
timestamp: 2026-01-25 00:10:34.987704
player_id: cpu_2
player_name: Priya
action: draw_deck
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}]

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


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

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


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

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


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

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


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

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


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

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


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


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

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


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

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


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

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


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

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


game_id: a2ab0479-3b71-420c-8ea9-d83371b1a059
timestamp: 2026-01-25 00:10:35.055160
player_id: cpu_3
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 3
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}]

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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


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


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


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

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


