# moves

game_id: b667bf55-da8b-4cb9-b3f0-20a39ce59ecf
timestamp: 2026-01-25 00:10:10.382741
player_id: cpu_1
player_name: Maya
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped A for 5 at pos 3
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: b667bf55-da8b-4cb9-b3f0-20a39ce59ecf
timestamp: 2026-01-25 00:10:10.389267
player_id: cpu_2
player_name: Kenji
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": "K", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}]

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


game_id: b667bf55-da8b-4cb9-b3f0-20a39ce59ecf
timestamp: 2026-01-25 00:10:10.395385
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped 5 for 6 at pos 5
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: b667bf55-da8b-4cb9-b3f0-20a39ce59ecf
timestamp: 2026-01-25 00:10:10.401229
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": "8", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: b667bf55-da8b-4cb9-b3f0-20a39ce59ecf
timestamp: 2026-01-25 00:10:10.407182
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: swapped 6 for 8 at pos 0
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: b667bf55-da8b-4cb9-b3f0-20a39ce59ecf
timestamp: 2026-01-25 00:10:10.412931
player_id: cpu_0
player_name: River
action: draw_deck
card_rank: Q
card_suit: spades
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: b667bf55-da8b-4cb9-b3f0-20a39ce59ecf
timestamp: 2026-01-25 00:10:10.424371
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: b667bf55-da8b-4cb9-b3f0-20a39ce59ecf
timestamp: 2026-01-25 00:10:10.430341
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "3", "suit": "spades"}
decision_reason: swapped 6 for 3 at pos 4
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: b667bf55-da8b-4cb9-b3f0-20a39ce59ecf
timestamp: 2026-01-25 00:10:10.436499
player_id: cpu_2
player_name: Kenji
action: take_discard
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: b667bf55-da8b-4cb9-b3f0-20a39ce59ecf
timestamp: 2026-01-25 00:10:10.442988
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped 3 for 5 at pos 5
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: b667bf55-da8b-4cb9-b3f0-20a39ce59ecf
timestamp: 2026-01-25 00:10:10.449216
player_id: cpu_3
player_name: Priya
action: take_discard
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: b667bf55-da8b-4cb9-b3f0-20a39ce59ecf
timestamp: 2026-01-25 00:10:10.455236
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 5 for 7 at pos 1
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: b667bf55-da8b-4cb9-b3f0-20a39ce59ecf
timestamp: 2026-01-25 00:10:10.461184
player_id: cpu_0
player_name: River
action: take_discard
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took 7 from discard
visible_opponents_json:
{"Maya": [{"rank": "A", "suit": "spades"}, {"rank": "5", "suit": "spades"}, {"rank": "4", "suit": "diamonds"}, {"rank": "A", "suit": "hearts"}, {"rank": "6", "suit": "spades"}, {"rank": "4", "suit": "clubs"}], "Kenji": [{"rank": "4", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}, {"rank": "4", "suit": "hearts"}, {"rank": "3", "suit": "spades"}], "Priya": [{"rank": "6", "suit": "hearts"}, {"rank": "5", "suit": "hearts"}, {"rank": "7", "suit": "spades"}, {"rank": "A", "suit": "clubs"}]}


game_id: b667bf55-da8b-4cb9-b3f0-20a39ce59ecf
timestamp: 2026-01-25 00:10:10.467319
player_id: cpu_0
player_name: River
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "K", "suit": "clubs"}
decision_reason: swapped 7 for K at pos 4
hand_json:
[{"rank": "9", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: 7586958f-d96b-44b5-a830-b84ab7e8f32e
timestamp: 2026-01-25 00:10:10.484371
player_id: cpu_0
player_name: Maya
action: take_discard
card_rank: K
card_suit: diamonds
decision_reason: took K from discard
hand_json:
[{"rank": "J", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}]

visible_opponents_json:
{"Marcus": [{"rank": "8", "suit": "spades"}, {"rank": "6", "suit": "diamonds"}], "Kenji": [{"rank": "2", "suit": "spades"}, {"rank": "2", "suit": "clubs"}], "River": [{"rank": "5", "suit": "diamonds"}, {"rank": "J", "suit": "diamonds"}]}


game_id: 7586958f-d96b-44b5-a830-b84ab7e8f32e
timestamp: 2026-01-25 00:10:10.491815
player_id: cpu_0
player_name: Maya
action: swap
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: swapped K for 4 at pos 1
hand_json:
[{"rank": "J", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}]

visible_opponents_json:
{"Marcus": [{"rank": "8", "suit": "spades"}, {"rank": "6", "suit": "diamonds"}], "Kenji": [{"rank": "2", "suit": "spades"}, {"rank": "2", "suit": "clubs"}], "River": [{"rank": "5", "suit": "diamonds"}, {"rank": "J", "suit": "diamonds"}]}


game_id: 7586958f-d96b-44b5-a830-b84ab7e8f32e
timestamp: 2026-01-25 00:10:10.497939
player_id: cpu_1
player_name: Marcus
action: take_discard
card_rank: 4
card_suit: clubs
decision_reason: took 4 from discard
hand_json:
[{"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}]

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


game_id: 7586958f-d96b-44b5-a830-b84ab7e8f32e
timestamp: 2026-01-25 00:10:10.503874
player_id: cpu_1
player_name: Marcus
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: swapped 4 for 8 at pos 2
hand_json:
[{"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}]

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


game_id: 7586958f-d96b-44b5-a830-b84ab7e8f32e
timestamp: 2026-01-25 00:10:10.509825
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}]

visible_opponents_json:
{"Maya": [{"rank": "K", "suit": "diamonds"}, {"rank": "3", "suit": "diamonds"}], "Marcus": [{"rank": "4", "suit": "clubs"}, {"rank": "6", "suit": "diamonds"}], "River": [{"rank": "5", "suit": "diamonds"}, {"rank": "J", "suit": "diamonds"}]}


game_id: 7586958f-d96b-44b5-a830-b84ab7e8f32e
timestamp: 2026-01-25 00:10:10.517272
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "A", "suit": "hearts"}
decision_reason: swapped 8 for A at pos 3
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}]

visible_opponents_json:
{"Maya": [{"rank": "K", "suit": "diamonds"}, {"rank": "3", "suit": "diamonds"}], "Marcus": [{"rank": "4", "suit": "clubs"}, {"rank": "6", "suit": "diamonds"}], "River": [{"rank": "5", "suit": "diamonds"}, {"rank": "J", "suit": "diamonds"}]}


game_id: 7586958f-d96b-44b5-a830-b84ab7e8f32e
timestamp: 2026-01-25 00:10:10.523518
player_id: cpu_3
player_name: River
action: take_discard
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: took A from discard
hand_json:
[{"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: 7586958f-d96b-44b5-a830-b84ab7e8f32e
timestamp: 2026-01-25 00:10:10.529843
player_id: cpu_3
player_name: River
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: swapped A for J at pos 4
hand_json:
[{"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: 7586958f-d96b-44b5-a830-b84ab7e8f32e
timestamp: 2026-01-25 00:10:10.536032
player_id: cpu_0
player_name: Maya
action: draw_deck
card_rank: Q
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}]

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


game_id: 7586958f-d96b-44b5-a830-b84ab7e8f32e
timestamp: 2026-01-25 00:10:10.548482
player_id: cpu_1
player_name: Marcus
action: draw_deck
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}]

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


game_id: 7586958f-d96b-44b5-a830-b84ab7e8f32e
timestamp: 2026-01-25 00:10:10.561180
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: A
card_suit: spades
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 7586958f-d96b-44b5-a830-b84ab7e8f32e
timestamp: 2026-01-25 00:10:10.567206
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: A
card_suit: spades
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: swapped A for 8 at pos 3
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 7586958f-d96b-44b5-a830-b84ab7e8f32e
timestamp: 2026-01-25 00:10:10.573244
player_id: cpu_3
player_name: River
action: draw_deck
card_rank: 8
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: 7586958f-d96b-44b5-a830-b84ab7e8f32e
timestamp: 2026-01-25 00:10:10.585991
player_id: cpu_0
player_name: Maya
action: draw_deck
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Marcus": [{"rank": "4", "suit": "clubs"}, {"rank": "6", "suit": "diamonds"}], "Kenji": [{"rank": "2", "suit": "spades"}, {"rank": "A", "suit": "spades"}, {"rank": "2", "suit": "clubs"}], "River": [{"rank": "5", "suit": "diamonds"}, {"rank": "A", "suit": "hearts"}]}


game_id: 7586958f-d96b-44b5-a830-b84ab7e8f32e
timestamp: 2026-01-25 00:10:10.592369
player_id: cpu_0
player_name: Maya
action: swap
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "3", "suit": "diamonds"}
decision_reason: swapped A for 3 at pos 3
hand_json:
[{"rank": "J", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}]

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


game_id: 7586958f-d96b-44b5-a830-b84ab7e8f32e
timestamp: 2026-01-25 00:10:10.598687
player_id: cpu_1
player_name: Marcus
action: take_discard
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: took 3 from discard
visible_opponents_json:
{"Maya": [{"rank": "K", "suit": "diamonds"}, {"rank": "A", "suit": "diamonds"}], "Kenji": [{"rank": "2", "suit": "spades"}, {"rank": "A", "suit": "spades"}, {"rank": "2", "suit": "clubs"}], "River": [{"rank": "5", "suit": "diamonds"}, {"rank": "A", "suit": "hearts"}]}


game_id: 7586958f-d96b-44b5-a830-b84ab7e8f32e
timestamp: 2026-01-25 00:10:10.605018
player_id: cpu_1
player_name: Marcus
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped 3 for 6 at pos 4
hand_json:
[{"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}]

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


game_id: 7586958f-d96b-44b5-a830-b84ab7e8f32e
timestamp: 2026-01-25 00:10:10.611276
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: 10
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 7586958f-d96b-44b5-a830-b84ab7e8f32e
timestamp: 2026-01-25 00:10:10.623793
player_id: cpu_3
player_name: River
action: draw_deck
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Maya": [{"rank": "K", "suit": "diamonds"}, {"rank": "A", "suit": "diamonds"}], "Marcus": [{"rank": "4", "suit": "clubs"}, {"rank": "3", "suit": "diamonds"}], "Kenji": [{"rank": "2", "suit": "spades"}, {"rank": "A", "suit": "spades"}, {"rank": "2", "suit": "clubs"}]}


game_id: 7586958f-d96b-44b5-a830-b84ab7e8f32e
timestamp: 2026-01-25 00:10:10.629898
player_id: cpu_3
player_name: River
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped 3 for 5 at pos 2
hand_json:
[{"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: 7586958f-d96b-44b5-a830-b84ab7e8f32e
timestamp: 2026-01-25 00:10:10.636179
player_id: cpu_0
player_name: Maya
action: take_discard
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "J", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}]

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


game_id: 7586958f-d96b-44b5-a830-b84ab7e8f32e
timestamp: 2026-01-25 00:10:10.642325
player_id: cpu_0
player_name: Maya
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: swapped 5 for J at pos 0
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}]

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


game_id: 7586958f-d96b-44b5-a830-b84ab7e8f32e
timestamp: 2026-01-25 00:10:10.650297
player_id: cpu_1
player_name: Marcus
action: draw_deck
card_rank: J
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}]

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


game_id: 7586958f-d96b-44b5-a830-b84ab7e8f32e
timestamp: 2026-01-25 00:10:10.662800
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: 8
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Maya": [{"rank": "5", "suit": "diamonds"}, {"rank": "K", "suit": "diamonds"}, {"rank": "A", "suit": "diamonds"}], "Marcus": [{"rank": "4", "suit": "clubs"}, {"rank": "3", "suit": "diamonds"}], "River": [{"rank": "3", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}]}


game_id: 7586958f-d96b-44b5-a830-b84ab7e8f32e
timestamp: 2026-01-25 00:10:10.669776
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 8
card_suit: clubs
discard_top_json: {"rank": "K", "suit": "clubs"}
decision_reason: swapped 8 for K at pos 4
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 7586958f-d96b-44b5-a830-b84ab7e8f32e
timestamp: 2026-01-25 00:10:10.676277
player_id: cpu_3
player_name: River
action: take_discard
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: took K from discard
hand_json:
[{"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: 7586958f-d96b-44b5-a830-b84ab7e8f32e
timestamp: 2026-01-25 00:10:10.681950
player_id: cpu_3
player_name: River
action: swap
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "3", "suit": "clubs"}
decision_reason: swapped K for 3 at pos 2
hand_json:
[{"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: 7586958f-d96b-44b5-a830-b84ab7e8f32e
timestamp: 2026-01-25 00:10:10.688227
player_id: cpu_0
player_name: Maya
action: take_discard
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}]

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


game_id: 7586958f-d96b-44b5-a830-b84ab7e8f32e
timestamp: 2026-01-25 00:10:10.694688
player_id: cpu_0
player_name: Maya
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped 3 for 5 at pos 0
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}]

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


game_id: 7586958f-d96b-44b5-a830-b84ab7e8f32e
timestamp: 2026-01-25 00:10:10.700722
player_id: cpu_1
player_name: Marcus
action: draw_deck
card_rank: Q
card_suit: spades
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Maya": [{"rank": "3", "suit": "clubs"}, {"rank": "K", "suit": "diamonds"}, {"rank": "A", "suit": "diamonds"}], "Kenji": [{"rank": "2", "suit": "spades"}, {"rank": "A", "suit": "spades"}, {"rank": "8", "suit": "clubs"}, {"rank": "2", "suit": "clubs"}], "River": [{"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}]}


game_id: 7586958f-d96b-44b5-a830-b84ab7e8f32e
timestamp: 2026-01-25 00:10:10.712623
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 7586958f-d96b-44b5-a830-b84ab7e8f32e
timestamp: 2026-01-25 00:10:10.718493
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: swapped 3 for 8 at pos 4
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 7586958f-d96b-44b5-a830-b84ab7e8f32e
timestamp: 2026-01-25 00:10:10.724943
player_id: cpu_3
player_name: River
action: draw_deck
card_rank: 9
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: 7586958f-d96b-44b5-a830-b84ab7e8f32e
timestamp: 2026-01-25 00:10:10.737501
player_id: cpu_0
player_name: Maya
action: draw_deck
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}]

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


game_id: 7586958f-d96b-44b5-a830-b84ab7e8f32e
timestamp: 2026-01-25 00:10:10.743738
player_id: cpu_0
player_name: Maya
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped 4 for 5 at pos 2
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}]

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


game_id: 7586958f-d96b-44b5-a830-b84ab7e8f32e
timestamp: 2026-01-25 00:10:10.749772
player_id: cpu_1
player_name: Marcus
action: take_discard
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: took 5 from discard
visible_opponents_json:
{"Maya": [{"rank": "3", "suit": "clubs"}, {"rank": "K", "suit": "diamonds"}, {"rank": "4", "suit": "hearts"}, {"rank": "A", "suit": "diamonds"}], "Kenji": [{"rank": "2", "suit": "spades"}, {"rank": "A", "suit": "spades"}, {"rank": "3", "suit": "hearts"}, {"rank": "2", "suit": "clubs"}], "River": [{"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}]}


game_id: 7586958f-d96b-44b5-a830-b84ab7e8f32e
timestamp: 2026-01-25 00:10:10.756604
player_id: cpu_1
player_name: Marcus
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "2", "suit": "hearts"}
decision_reason: swapped 5 for 2 at pos 5
hand_json:
[{"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: 7586958f-d96b-44b5-a830-b84ab7e8f32e
timestamp: 2026-01-25 00:10:10.762808
player_id: cpu_2
player_name: Kenji
action: take_discard
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: took 2 from discard
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 7586958f-d96b-44b5-a830-b84ab7e8f32e
timestamp: 2026-01-25 00:10:10.768955
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "3", "suit": "hearts"}
decision_reason: swapped 2 for 3 at pos 4
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 7586958f-d96b-44b5-a830-b84ab7e8f32e
timestamp: 2026-01-25 00:10:10.774693
player_id: cpu_3
player_name: River
action: draw_deck
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "3", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Maya": [{"rank": "3", "suit": "clubs"}, {"rank": "K", "suit": "diamonds"}, {"rank": "4", "suit": "hearts"}, {"rank": "A", "suit": "diamonds"}], "Marcus": [{"rank": "4", "suit": "clubs"}, {"rank": "3", "suit": "diamonds"}, {"rank": "5", "suit": "spades"}], "Kenji": [{"rank": "2", "suit": "spades"}, {"rank": "A", "suit": "spades"}, {"rank": "2", "suit": "hearts"}, {"rank": "2", "suit": "clubs"}]}


game_id: 7586958f-d96b-44b5-a830-b84ab7e8f32e
timestamp: 2026-01-25 00:10:10.780772
player_id: cpu_3
player_name: River
action: swap
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped 4 for 5 at pos 1
hand_json:
[{"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: 7586958f-d96b-44b5-a830-b84ab7e8f32e
timestamp: 2026-01-25 00:10:10.787410
player_id: cpu_0
player_name: Maya
action: take_discard
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "3", "suit": "hearts"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}]

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


game_id: 7586958f-d96b-44b5-a830-b84ab7e8f32e
timestamp: 2026-01-25 00:10:10.793590
player_id: cpu_0
player_name: Maya
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: swapped 5 for Q at pos 5
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: 7586958f-d96b-44b5-a830-b84ab7e8f32e
timestamp: 2026-01-25 00:10:10.799888
player_id: cpu_1
player_name: Marcus
action: draw_deck
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: 7586958f-d96b-44b5-a830-b84ab7e8f32e
timestamp: 2026-01-25 00:10:10.806205
player_id: cpu_1
player_name: Marcus
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "K", "suit": "hearts"}
decision_reason: swapped 3 for K at pos 1
hand_json:
[{"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: 7586958f-d96b-44b5-a830-b84ab7e8f32e
timestamp: 2026-01-25 00:10:10.812669
player_id: cpu_2
player_name: Kenji
action: take_discard
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: took K from discard
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 7586958f-d96b-44b5-a830-b84ab7e8f32e
timestamp: 2026-01-25 00:10:10.818910
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "A", "suit": "spades"}
decision_reason: swapped K for A at pos 3
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 7586958f-d96b-44b5-a830-b84ab7e8f32e
timestamp: 2026-01-25 00:10:10.825660
player_id: cpu_3
player_name: River
action: take_discard
card_rank: A
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: took A from discard
hand_json:
[{"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: 7586958f-d96b-44b5-a830-b84ab7e8f32e
timestamp: 2026-01-25 00:10:10.831813
player_id: cpu_3
player_name: River
action: swap
card_rank: A
card_suit: spades
discard_top_json: {"rank": "4", "suit": "spades"}
decision_reason: swapped A for 4 at pos 1
hand_json:
[{"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: 7586958f-d96b-44b5-a830-b84ab7e8f32e
timestamp: 2026-01-25 00:10:10.838045
player_id: cpu_0
player_name: Maya
action: take_discard
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: 7586958f-d96b-44b5-a830-b84ab7e8f32e
timestamp: 2026-01-25 00:10:10.844117
player_id: cpu_0
player_name: Maya
action: swap
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped 4 for 5 at pos 5
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 7586958f-d96b-44b5-a830-b84ab7e8f32e
timestamp: 2026-01-25 00:10:10.850200
player_id: cpu_1
player_name: Marcus
action: take_discard
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: 7586958f-d96b-44b5-a830-b84ab7e8f32e
timestamp: 2026-01-25 00:10:10.856227
player_id: cpu_1
player_name: Marcus
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: swapped 5 for 9 at pos 3
hand_json:
[{"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: 7586958f-d96b-44b5-a830-b84ab7e8f32e
timestamp: 2026-01-25 00:10:10.862491
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 7586958f-d96b-44b5-a830-b84ab7e8f32e
timestamp: 2026-01-25 00:10:10.868313
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: swapped 4 for 10 at pos 0
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 7586958f-d96b-44b5-a830-b84ab7e8f32e
timestamp: 2026-01-25 00:10:10.874589
player_id: cpu_3
player_name: River
action: draw_deck
card_rank: J
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: 7586958f-d96b-44b5-a830-b84ab7e8f32e
timestamp: 2026-01-25 00:10:10.887622
player_id: cpu_0
player_name: Maya
action: draw_deck
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 7586958f-d96b-44b5-a830-b84ab7e8f32e
timestamp: 2026-01-25 00:10:10.894153
player_id: cpu_0
player_name: Maya
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped 7 for 6 at pos 4
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 7586958f-d96b-44b5-a830-b84ab7e8f32e
timestamp: 2026-01-25 00:10:10.901786
player_id: cpu_1
player_name: Marcus
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": "Q", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: 7586958f-d96b-44b5-a830-b84ab7e8f32e
timestamp: 2026-01-25 00:10:10.908399
player_id: cpu_1
player_name: Marcus
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: swapped 6 for Q at pos 0
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: 7586958f-d96b-44b5-a830-b84ab7e8f32e
timestamp: 2026-01-25 00:10:10.914419
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 7586958f-d96b-44b5-a830-b84ab7e8f32e
timestamp: 2026-01-25 00:10:10.920345
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: swapped 7 for 9 at pos 2
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 7586958f-d96b-44b5-a830-b84ab7e8f32e
timestamp: 2026-01-25 00:10:10.926512
player_id: cpu_3
player_name: River
action: draw_deck
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Maya": [{"rank": "3", "suit": "clubs"}, {"rank": "K", "suit": "diamonds"}, {"rank": "4", "suit": "hearts"}, {"rank": "A", "suit": "diamonds"}, {"rank": "7", "suit": "hearts"}, {"rank": "4", "suit": "spades"}], "Marcus": [{"rank": "6", "suit": "spades"}, {"rank": "3", "suit": "spades"}, {"rank": "4", "suit": "clubs"}, {"rank": "5", "suit": "hearts"}, {"rank": "3", "suit": "diamonds"}, {"rank": "5", "suit": "spades"}], "Kenji": [{"rank": "4", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}, {"rank": "7", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}, {"rank": "2", "suit": "hearts"}, {"rank": "2", "suit": "clubs"}]}


game_id: 7586958f-d96b-44b5-a830-b84ab7e8f32e
timestamp: 2026-01-25 00:10:10.932788
player_id: cpu_3
player_name: River
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: swapped 6 for 9 at pos 3
hand_json:
[{"rank": "10", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: f53f7dc6-0e01-4d29-96ea-b5bc14224053
timestamp: 2026-01-25 00:10:10.950324
player_id: cpu_0
player_name: Sofia
action: take_discard
card_rank: 4
card_suit: diamonds
decision_reason: took 4 from discard
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": false}]

visible_opponents_json:
{"Sage": [{"rank": "5", "suit": "hearts"}, {"rank": "A", "suit": "spades"}], "Marcus": [{"rank": "Q", "suit": "hearts"}, {"rank": "9", "suit": "hearts"}], "Diego": [{"rank": "Q", "suit": "spades"}, {"rank": "K", "suit": "clubs"}]}


game_id: f53f7dc6-0e01-4d29-96ea-b5bc14224053
timestamp: 2026-01-25 00:10:10.956797
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: swapped 4 for 9 at pos 3
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": false}]

visible_opponents_json:
{"Sage": [{"rank": "5", "suit": "hearts"}, {"rank": "A", "suit": "spades"}], "Marcus": [{"rank": "Q", "suit": "hearts"}, {"rank": "9", "suit": "hearts"}], "Diego": [{"rank": "Q", "suit": "spades"}, {"rank": "K", "suit": "clubs"}]}


game_id: f53f7dc6-0e01-4d29-96ea-b5bc14224053
timestamp: 2026-01-25 00:10:10.962971
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}]

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


game_id: f53f7dc6-0e01-4d29-96ea-b5bc14224053
timestamp: 2026-01-25 00:10:10.975545
player_id: cpu_2
player_name: Marcus
action: take_discard
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": true}]

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


game_id: f53f7dc6-0e01-4d29-96ea-b5bc14224053
timestamp: 2026-01-25 00:10:10.981835
player_id: cpu_2
player_name: Marcus
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: swapped 6 for Q at pos 1
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": true}]

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


game_id: f53f7dc6-0e01-4d29-96ea-b5bc14224053
timestamp: 2026-01-25 00:10:10.988330
player_id: cpu_3
player_name: Diego
action: take_discard
card_rank: Q
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took Q from discard
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": false}]

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


game_id: f53f7dc6-0e01-4d29-96ea-b5bc14224053
timestamp: 2026-01-25 00:10:10.994550
player_id: cpu_3
player_name: Diego
action: swap
card_rank: Q
card_suit: hearts
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: swapped Q for 4 at pos 5
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": true}]

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


game_id: f53f7dc6-0e01-4d29-96ea-b5bc14224053
timestamp: 2026-01-25 00:10:11.001155
player_id: cpu_0
player_name: Sofia
action: take_discard
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": false}]

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


game_id: f53f7dc6-0e01-4d29-96ea-b5bc14224053
timestamp: 2026-01-25 00:10:11.007467
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: swapped 4 for 4 at pos 0
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": false}]

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


game_id: f53f7dc6-0e01-4d29-96ea-b5bc14224053
timestamp: 2026-01-25 00:10:11.013629
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}]

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


game_id: f53f7dc6-0e01-4d29-96ea-b5bc14224053
timestamp: 2026-01-25 00:10:11.019879
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped 4 for 5 at pos 0
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}]

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


game_id: f53f7dc6-0e01-4d29-96ea-b5bc14224053
timestamp: 2026-01-25 00:10:11.026191
player_id: cpu_2
player_name: Marcus
action: take_discard
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": true}]

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


game_id: f53f7dc6-0e01-4d29-96ea-b5bc14224053
timestamp: 2026-01-25 00:10:11.032597
player_id: cpu_2
player_name: Marcus
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: swapped 5 for 9 at pos 5
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: f53f7dc6-0e01-4d29-96ea-b5bc14224053
timestamp: 2026-01-25 00:10:11.038826
player_id: cpu_3
player_name: Diego
action: draw_deck
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": true}]

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


game_id: f53f7dc6-0e01-4d29-96ea-b5bc14224053
timestamp: 2026-01-25 00:10:11.045738
player_id: cpu_3
player_name: Diego
action: swap
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: swapped 2 for Q at pos 2
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": true}]

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


game_id: f53f7dc6-0e01-4d29-96ea-b5bc14224053
timestamp: 2026-01-25 00:10:11.052856
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: 8
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": false}]

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


game_id: f53f7dc6-0e01-4d29-96ea-b5bc14224053
timestamp: 2026-01-25 00:10:11.065737
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: 9
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}]

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


game_id: f53f7dc6-0e01-4d29-96ea-b5bc14224053
timestamp: 2026-01-25 00:10:11.077954
player_id: cpu_2
player_name: Marcus
action: draw_deck
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: f53f7dc6-0e01-4d29-96ea-b5bc14224053
timestamp: 2026-01-25 00:10:11.084056
player_id: cpu_2
player_name: Marcus
action: swap
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped A for 6 at pos 1
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: f53f7dc6-0e01-4d29-96ea-b5bc14224053
timestamp: 2026-01-25 00:10:11.090087
player_id: cpu_3
player_name: Diego
action: take_discard
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": true}]

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


game_id: f53f7dc6-0e01-4d29-96ea-b5bc14224053
timestamp: 2026-01-25 00:10:11.096101
player_id: cpu_3
player_name: Diego
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped 6 for 7 at pos 0
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": true}]

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


game_id: f53f7dc6-0e01-4d29-96ea-b5bc14224053
timestamp: 2026-01-25 00:10:11.102350
player_id: cpu_0
player_name: Sofia
action: take_discard
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: took 7 from discard
visible_opponents_json:
{"Sage": [{"rank": "4", "suit": "clubs"}, {"rank": "A", "suit": "spades"}], "Marcus": [{"rank": "A", "suit": "diamonds"}, {"rank": "5", "suit": "hearts"}], "Diego": [{"rank": "6", "suit": "spades"}, {"rank": "2", "suit": "hearts"}, {"rank": "K", "suit": "clubs"}, {"rank": "Q", "suit": "hearts"}]}


game_id: f53f7dc6-0e01-4d29-96ea-b5bc14224053
timestamp: 2026-01-25 00:10:11.108537
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "2", "suit": "diamonds"}
decision_reason: swapped 7 for 2 at pos 2
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": false}]

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


game_id: f53f7dc6-0e01-4d29-96ea-b5bc14224053
timestamp: 2026-01-25 00:10:11.115021
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: took 2 from discard
visible_opponents_json:
{"Sofia": [{"rank": "4", "suit": "hearts"}, {"rank": "K", "suit": "diamonds"}, {"rank": "7", "suit": "clubs"}, {"rank": "4", "suit": "diamonds"}], "Marcus": [{"rank": "A", "suit": "diamonds"}, {"rank": "5", "suit": "hearts"}], "Diego": [{"rank": "6", "suit": "spades"}, {"rank": "2", "suit": "hearts"}, {"rank": "K", "suit": "clubs"}, {"rank": "Q", "suit": "hearts"}]}


game_id: f53f7dc6-0e01-4d29-96ea-b5bc14224053
timestamp: 2026-01-25 00:10:11.121090
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: swapped 2 for 4 at pos 0
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}]

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


game_id: f53f7dc6-0e01-4d29-96ea-b5bc14224053
timestamp: 2026-01-25 00:10:11.127134
player_id: cpu_2
player_name: Marcus
action: take_discard
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: f53f7dc6-0e01-4d29-96ea-b5bc14224053
timestamp: 2026-01-25 00:10:11.133272
player_id: cpu_2
player_name: Marcus
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped 4 for 5 at pos 5
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: f53f7dc6-0e01-4d29-96ea-b5bc14224053
timestamp: 2026-01-25 00:10:11.139220
player_id: cpu_3
player_name: Diego
action: take_discard
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": true}]

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


game_id: f53f7dc6-0e01-4d29-96ea-b5bc14224053
timestamp: 2026-01-25 00:10:11.144840
player_id: cpu_3
player_name: Diego
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: swapped 5 for Q at pos 5
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: f53f7dc6-0e01-4d29-96ea-b5bc14224053
timestamp: 2026-01-25 00:10:11.150511
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: J
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": false}]

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


game_id: f53f7dc6-0e01-4d29-96ea-b5bc14224053
timestamp: 2026-01-25 00:10:11.162682
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}]

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


game_id: f53f7dc6-0e01-4d29-96ea-b5bc14224053
timestamp: 2026-01-25 00:10:11.169043
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: swapped 5 for Q at pos 2
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}]

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


game_id: f53f7dc6-0e01-4d29-96ea-b5bc14224053
timestamp: 2026-01-25 00:10:11.175452
player_id: cpu_2
player_name: Marcus
action: draw_deck
card_rank: 10
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: f53f7dc6-0e01-4d29-96ea-b5bc14224053
timestamp: 2026-01-25 00:10:11.188538
player_id: cpu_3
player_name: Diego
action: draw_deck
card_rank: Q
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: f53f7dc6-0e01-4d29-96ea-b5bc14224053
timestamp: 2026-01-25 00:10:11.201035
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Sage": [{"rank": "2", "suit": "diamonds"}, {"rank": "5", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}], "Marcus": [{"rank": "A", "suit": "diamonds"}, {"rank": "4", "suit": "clubs"}], "Diego": [{"rank": "6", "suit": "spades"}, {"rank": "2", "suit": "hearts"}, {"rank": "K", "suit": "clubs"}, {"rank": "5", "suit": "hearts"}]}


game_id: f53f7dc6-0e01-4d29-96ea-b5bc14224053
timestamp: 2026-01-25 00:10:11.206960
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: swapped 7 for J at pos 5
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}]

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


game_id: f53f7dc6-0e01-4d29-96ea-b5bc14224053
timestamp: 2026-01-25 00:10:11.212808
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: 8
card_suit: spades
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}]

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


game_id: f53f7dc6-0e01-4d29-96ea-b5bc14224053
timestamp: 2026-01-25 00:10:11.225015
player_id: cpu_2
player_name: Marcus
action: draw_deck
card_rank: J
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Sofia": [{"rank": "4", "suit": "hearts"}, {"rank": "K", "suit": "diamonds"}, {"rank": "7", "suit": "clubs"}, {"rank": "4", "suit": "diamonds"}, {"rank": "7", "suit": "spades"}], "Sage": [{"rank": "2", "suit": "diamonds"}, {"rank": "5", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}], "Diego": [{"rank": "6", "suit": "spades"}, {"rank": "2", "suit": "hearts"}, {"rank": "K", "suit": "clubs"}, {"rank": "5", "suit": "hearts"}]}


game_id: f53f7dc6-0e01-4d29-96ea-b5bc14224053
timestamp: 2026-01-25 00:10:11.237550
player_id: cpu_3
player_name: Diego
action: draw_deck
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Sofia": [{"rank": "4", "suit": "hearts"}, {"rank": "K", "suit": "diamonds"}, {"rank": "7", "suit": "clubs"}, {"rank": "4", "suit": "diamonds"}, {"rank": "7", "suit": "spades"}], "Sage": [{"rank": "2", "suit": "diamonds"}, {"rank": "5", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}], "Marcus": [{"rank": "A", "suit": "diamonds"}, {"rank": "4", "suit": "clubs"}]}


game_id: f53f7dc6-0e01-4d29-96ea-b5bc14224053
timestamp: 2026-01-25 00:10:11.243838
player_id: cpu_3
player_name: Diego
action: swap
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped 3 for 6 at pos 0
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: f53f7dc6-0e01-4d29-96ea-b5bc14224053
timestamp: 2026-01-25 00:10:11.249731
player_id: cpu_0
player_name: Sofia
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": "4", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}]

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


game_id: f53f7dc6-0e01-4d29-96ea-b5bc14224053
timestamp: 2026-01-25 00:10:11.256139
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: swapped 6 for 10 at pos 4
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}]

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


game_id: f53f7dc6-0e01-4d29-96ea-b5bc14224053
timestamp: 2026-01-25 00:10:11.262115
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Sofia": [{"rank": "4", "suit": "hearts"}, {"rank": "K", "suit": "diamonds"}, {"rank": "7", "suit": "clubs"}, {"rank": "4", "suit": "diamonds"}, {"rank": "6", "suit": "spades"}, {"rank": "7", "suit": "spades"}], "Marcus": [{"rank": "A", "suit": "diamonds"}, {"rank": "4", "suit": "clubs"}], "Diego": [{"rank": "3", "suit": "hearts"}, {"rank": "2", "suit": "hearts"}, {"rank": "K", "suit": "clubs"}, {"rank": "5", "suit": "hearts"}]}


game_id: f53f7dc6-0e01-4d29-96ea-b5bc14224053
timestamp: 2026-01-25 00:10:11.268280
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: swapped 6 for 10 at pos 5
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}]

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


game_id: f53f7dc6-0e01-4d29-96ea-b5bc14224053
timestamp: 2026-01-25 00:10:11.274485
player_id: cpu_2
player_name: Marcus
action: draw_deck
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Sofia": [{"rank": "4", "suit": "hearts"}, {"rank": "K", "suit": "diamonds"}, {"rank": "7", "suit": "clubs"}, {"rank": "4", "suit": "diamonds"}, {"rank": "6", "suit": "spades"}, {"rank": "7", "suit": "spades"}], "Sage": [{"rank": "2", "suit": "diamonds"}, {"rank": "5", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}, {"rank": "6", "suit": "diamonds"}], "Diego": [{"rank": "3", "suit": "hearts"}, {"rank": "2", "suit": "hearts"}, {"rank": "K", "suit": "clubs"}, {"rank": "5", "suit": "hearts"}]}


game_id: f53f7dc6-0e01-4d29-96ea-b5bc14224053
timestamp: 2026-01-25 00:10:11.280498
player_id: cpu_2
player_name: Marcus
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "A", "suit": "clubs"}
decision_reason: swapped 5 for A at pos 0
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: f53f7dc6-0e01-4d29-96ea-b5bc14224053
timestamp: 2026-01-25 00:10:11.286116
player_id: cpu_3
player_name: Diego
action: draw_deck
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "A", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: f53f7dc6-0e01-4d29-96ea-b5bc14224053
timestamp: 2026-01-25 00:10:11.292185
player_id: cpu_3
player_name: Diego
action: swap
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped 2 for 5 at pos 5
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 00db045a-b16a-4f6a-8a4a-e99bd9e39f17
timestamp: 2026-01-25 00:10:11.311352
player_id: cpu_0
player_name: Kenji
action: draw_deck
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "9", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}]

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


game_id: 00db045a-b16a-4f6a-8a4a-e99bd9e39f17
timestamp: 2026-01-25 00:10:11.317766
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped 5 for 7 at pos 2
hand_json:
[{"rank": "9", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}]

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


game_id: 00db045a-b16a-4f6a-8a4a-e99bd9e39f17
timestamp: 2026-01-25 00:10:11.324383
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}]

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


game_id: 00db045a-b16a-4f6a-8a4a-e99bd9e39f17
timestamp: 2026-01-25 00:10:11.331152
player_id: cpu_1
player_name: Maya
action: swap
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: swapped A for 4 at pos 4
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}]

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


game_id: 00db045a-b16a-4f6a-8a4a-e99bd9e39f17
timestamp: 2026-01-25 00:10:11.341326
player_id: cpu_2
player_name: Priya
action: take_discard
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: 00db045a-b16a-4f6a-8a4a-e99bd9e39f17
timestamp: 2026-01-25 00:10:11.347188
player_id: cpu_2
player_name: Priya
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: swapped 4 for 9 at pos 1
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: 00db045a-b16a-4f6a-8a4a-e99bd9e39f17
timestamp: 2026-01-25 00:10:11.353228
player_id: cpu_3
player_name: Sage
action: draw_deck
card_rank: Q
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 00db045a-b16a-4f6a-8a4a-e99bd9e39f17
timestamp: 2026-01-25 00:10:11.365468
player_id: cpu_0
player_name: Kenji
action: draw_deck
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "9", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}]

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


game_id: 00db045a-b16a-4f6a-8a4a-e99bd9e39f17
timestamp: 2026-01-25 00:10:11.371846
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped 3 for 7 at pos 3
hand_json:
[{"rank": "9", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}]

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


game_id: 00db045a-b16a-4f6a-8a4a-e99bd9e39f17
timestamp: 2026-01-25 00:10:11.377768
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}]

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


game_id: 00db045a-b16a-4f6a-8a4a-e99bd9e39f17
timestamp: 2026-01-25 00:10:11.384008
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped 3 for 7 at pos 1
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}]

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


game_id: 00db045a-b16a-4f6a-8a4a-e99bd9e39f17
timestamp: 2026-01-25 00:10:11.390290
player_id: cpu_2
player_name: Priya
action: take_discard
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: 00db045a-b16a-4f6a-8a4a-e99bd9e39f17
timestamp: 2026-01-25 00:10:11.397215
player_id: cpu_2
player_name: Priya
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: swapped 7 for 8 at pos 4
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: 00db045a-b16a-4f6a-8a4a-e99bd9e39f17
timestamp: 2026-01-25 00:10:11.403247
player_id: cpu_3
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": "A", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 00db045a-b16a-4f6a-8a4a-e99bd9e39f17
timestamp: 2026-01-25 00:10:11.415831
player_id: cpu_0
player_name: Kenji
action: draw_deck
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "9", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}]

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


game_id: 00db045a-b16a-4f6a-8a4a-e99bd9e39f17
timestamp: 2026-01-25 00:10:11.421835
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped 2 for 5 at pos 2
hand_json:
[{"rank": "9", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}]

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


game_id: 00db045a-b16a-4f6a-8a4a-e99bd9e39f17
timestamp: 2026-01-25 00:10:11.428009
player_id: cpu_1
player_name: Maya
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": "2", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}]

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


game_id: 00db045a-b16a-4f6a-8a4a-e99bd9e39f17
timestamp: 2026-01-25 00:10:11.434282
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped 5 for 5 at pos 5
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: 00db045a-b16a-4f6a-8a4a-e99bd9e39f17
timestamp: 2026-01-25 00:10:11.439973
player_id: cpu_2
player_name: Priya
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": "A", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: 00db045a-b16a-4f6a-8a4a-e99bd9e39f17
timestamp: 2026-01-25 00:10:11.445690
player_id: cpu_2
player_name: Priya
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped 5 for 7 at pos 4
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: 00db045a-b16a-4f6a-8a4a-e99bd9e39f17
timestamp: 2026-01-25 00:10:11.451848
player_id: cpu_3
player_name: Sage
action: take_discard
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: took 7 from discard
visible_opponents_json:
{"Kenji": [{"rank": "2", "suit": "diamonds"}, {"rank": "3", "suit": "diamonds"}], "Maya": [{"rank": "3", "suit": "spades"}, {"rank": "2", "suit": "spades"}, {"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "clubs"}, {"rank": "5", "suit": "spades"}], "Priya": [{"rank": "4", "suit": "hearts"}, {"rank": "5", "suit": "hearts"}, {"rank": "K", "suit": "diamonds"}]}


game_id: 00db045a-b16a-4f6a-8a4a-e99bd9e39f17
timestamp: 2026-01-25 00:10:11.458555
player_id: cpu_3
player_name: Sage
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: swapped 7 for Q at pos 2
hand_json:
[{"rank": "A", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 00db045a-b16a-4f6a-8a4a-e99bd9e39f17
timestamp: 2026-01-25 00:10:11.464779
player_id: cpu_0
player_name: Kenji
action: draw_deck
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "9", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}]

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


game_id: 00db045a-b16a-4f6a-8a4a-e99bd9e39f17
timestamp: 2026-01-25 00:10:11.470979
player_id: cpu_0
player_name: Kenji
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": "9", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}]

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


game_id: 00db045a-b16a-4f6a-8a4a-e99bd9e39f17
timestamp: 2026-01-25 00:10:11.477138
player_id: cpu_1
player_name: Maya
action: take_discard
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: 00db045a-b16a-4f6a-8a4a-e99bd9e39f17
timestamp: 2026-01-25 00:10:11.483856
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped 3 for 5 at pos 5
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: 00db045a-b16a-4f6a-8a4a-e99bd9e39f17
timestamp: 2026-01-25 00:10:11.489885
player_id: cpu_2
player_name: Priya
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": "A", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: 00db045a-b16a-4f6a-8a4a-e99bd9e39f17
timestamp: 2026-01-25 00:10:11.495987
player_id: cpu_2
player_name: Priya
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: swapped 5 for 10 at pos 2
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: 00db045a-b16a-4f6a-8a4a-e99bd9e39f17
timestamp: 2026-01-25 00:10:11.502461
player_id: cpu_3
player_name: Sage
action: draw_deck
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 00db045a-b16a-4f6a-8a4a-e99bd9e39f17
timestamp: 2026-01-25 00:10:11.508573
player_id: cpu_3
player_name: Sage
action: swap
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped 3 for 7 at pos 2
hand_json:
[{"rank": "A", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 00db045a-b16a-4f6a-8a4a-e99bd9e39f17
timestamp: 2026-01-25 00:10:11.514727
player_id: cpu_0
player_name: Kenji
action: take_discard
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "9", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}]

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


game_id: 00db045a-b16a-4f6a-8a4a-e99bd9e39f17
timestamp: 2026-01-25 00:10:11.520992
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "4", "suit": "spades"}
decision_reason: swapped 7 for 4 at pos 1
hand_json:
[{"rank": "9", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}]

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


game_id: 00db045a-b16a-4f6a-8a4a-e99bd9e39f17
timestamp: 2026-01-25 00:10:11.526991
player_id: cpu_1
player_name: Maya
action: take_discard
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: 00db045a-b16a-4f6a-8a4a-e99bd9e39f17
timestamp: 2026-01-25 00:10:11.533271
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "2", "suit": "hearts"}
decision_reason: swapped 4 for 2 at pos 0
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: 00db045a-b16a-4f6a-8a4a-e99bd9e39f17
timestamp: 2026-01-25 00:10:11.539234
player_id: cpu_2
player_name: Priya
action: take_discard
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: took 2 from discard
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: 00db045a-b16a-4f6a-8a4a-e99bd9e39f17
timestamp: 2026-01-25 00:10:11.545200
player_id: cpu_2
player_name: Priya
action: swap
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped 2 for 5 at pos 2
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: 00db045a-b16a-4f6a-8a4a-e99bd9e39f17
timestamp: 2026-01-25 00:10:11.551934
player_id: cpu_3
player_name: Sage
action: take_discard
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "A", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 00db045a-b16a-4f6a-8a4a-e99bd9e39f17
timestamp: 2026-01-25 00:10:11.558280
player_id: cpu_3
player_name: Sage
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped 5 for 6 at pos 3
hand_json:
[{"rank": "A", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 00db045a-b16a-4f6a-8a4a-e99bd9e39f17
timestamp: 2026-01-25 00:10:11.564164
player_id: cpu_0
player_name: Kenji
action: take_discard
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "9", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}]

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


game_id: 00db045a-b16a-4f6a-8a4a-e99bd9e39f17
timestamp: 2026-01-25 00:10:11.570117
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: swapped 6 for 9 at pos 0
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}]

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


game_id: 950dd103-fc6c-4a70-9dc8-560a06fdfe77
timestamp: 2026-01-25 00:10:11.587282
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: 9
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "Q", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}]

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


game_id: 950dd103-fc6c-4a70-9dc8-560a06fdfe77
timestamp: 2026-01-25 00:10:11.593673
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: 9
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: swapped 9 for Q at pos 0
hand_json:
[{"rank": "9", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}]

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


game_id: 950dd103-fc6c-4a70-9dc8-560a06fdfe77
timestamp: 2026-01-25 00:10:11.599941
player_id: cpu_1
player_name: Diego
action: draw_deck
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 950dd103-fc6c-4a70-9dc8-560a06fdfe77
timestamp: 2026-01-25 00:10:11.605938
player_id: cpu_1
player_name: Diego
action: swap
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped 2 for 7 at pos 0
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 950dd103-fc6c-4a70-9dc8-560a06fdfe77
timestamp: 2026-01-25 00:10:11.612057
player_id: cpu_2
player_name: Maya
action: take_discard
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "3", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": false}]

visible_opponents_json:
{"Marcus": [{"rank": "9", "suit": "diamonds"}, {"rank": "8", "suit": "diamonds"}], "Diego": [{"rank": "2", "suit": "diamonds"}, {"rank": "A", "suit": "hearts"}], "River": [{"rank": "4", "suit": "hearts"}, {"rank": "7", "suit": "clubs"}]}


game_id: 950dd103-fc6c-4a70-9dc8-560a06fdfe77
timestamp: 2026-01-25 00:10:11.618413
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 7 for 7 at pos 2
hand_json:
[{"rank": "3", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": false}]

visible_opponents_json:
{"Marcus": [{"rank": "9", "suit": "diamonds"}, {"rank": "8", "suit": "diamonds"}], "Diego": [{"rank": "2", "suit": "diamonds"}, {"rank": "A", "suit": "hearts"}], "River": [{"rank": "4", "suit": "hearts"}, {"rank": "7", "suit": "clubs"}]}


game_id: 950dd103-fc6c-4a70-9dc8-560a06fdfe77
timestamp: 2026-01-25 00:10:11.624406
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": "4", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}]

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


game_id: 950dd103-fc6c-4a70-9dc8-560a06fdfe77
timestamp: 2026-01-25 00:10:11.630029
player_id: cpu_3
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 2
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}]

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


game_id: 950dd103-fc6c-4a70-9dc8-560a06fdfe77
timestamp: 2026-01-25 00:10:11.635943
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: J
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "9", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}]

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


game_id: 950dd103-fc6c-4a70-9dc8-560a06fdfe77
timestamp: 2026-01-25 00:10:11.648088
player_id: cpu_1
player_name: Diego
action: draw_deck
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 950dd103-fc6c-4a70-9dc8-560a06fdfe77
timestamp: 2026-01-25 00:10:11.654461
player_id: cpu_1
player_name: Diego
action: swap
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "A", "suit": "hearts"}
decision_reason: swapped 2 for A at pos 5
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 950dd103-fc6c-4a70-9dc8-560a06fdfe77
timestamp: 2026-01-25 00:10:11.660868
player_id: cpu_2
player_name: Maya
action: take_discard
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: took A from discard
hand_json:
[{"rank": "3", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": false}]

visible_opponents_json:
{"Marcus": [{"rank": "9", "suit": "diamonds"}, {"rank": "8", "suit": "diamonds"}], "Diego": [{"rank": "2", "suit": "diamonds"}, {"rank": "2", "suit": "clubs"}], "River": [{"rank": "4", "suit": "hearts"}, {"rank": "7", "suit": "diamonds"}, {"rank": "7", "suit": "clubs"}]}


game_id: 950dd103-fc6c-4a70-9dc8-560a06fdfe77
timestamp: 2026-01-25 00:10:11.666842
player_id: cpu_2
player_name: Maya
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: swapped A for 10 at pos 3
hand_json:
[{"rank": "3", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": false}]

visible_opponents_json:
{"Marcus": [{"rank": "9", "suit": "diamonds"}, {"rank": "8", "suit": "diamonds"}], "Diego": [{"rank": "2", "suit": "diamonds"}, {"rank": "2", "suit": "clubs"}], "River": [{"rank": "4", "suit": "hearts"}, {"rank": "7", "suit": "diamonds"}, {"rank": "7", "suit": "clubs"}]}


game_id: 950dd103-fc6c-4a70-9dc8-560a06fdfe77
timestamp: 2026-01-25 00:10:11.673167
player_id: cpu_3
player_name: River
action: draw_deck
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}]

visible_opponents_json:
{"Marcus": [{"rank": "9", "suit": "diamonds"}, {"rank": "8", "suit": "diamonds"}], "Diego": [{"rank": "2", "suit": "diamonds"}, {"rank": "2", "suit": "clubs"}], "Maya": [{"rank": "5", "suit": "diamonds"}, {"rank": "7", "suit": "hearts"}, {"rank": "A", "suit": "hearts"}]}


game_id: 950dd103-fc6c-4a70-9dc8-560a06fdfe77
timestamp: 2026-01-25 00:10:11.681156
player_id: cpu_3
player_name: River
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 6 for 7 at pos 2
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}]

visible_opponents_json:
{"Marcus": [{"rank": "9", "suit": "diamonds"}, {"rank": "8", "suit": "diamonds"}], "Diego": [{"rank": "2", "suit": "diamonds"}, {"rank": "2", "suit": "clubs"}], "Maya": [{"rank": "5", "suit": "diamonds"}, {"rank": "7", "suit": "hearts"}, {"rank": "A", "suit": "hearts"}]}


game_id: 950dd103-fc6c-4a70-9dc8-560a06fdfe77
timestamp: 2026-01-25 00:10:11.687141
player_id: cpu_0
player_name: Marcus
action: take_discard
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: took 7 from discard
visible_opponents_json:
{"Diego": [{"rank": "2", "suit": "diamonds"}, {"rank": "2", "suit": "clubs"}], "Maya": [{"rank": "5", "suit": "diamonds"}, {"rank": "7", "suit": "hearts"}, {"rank": "A", "suit": "hearts"}], "River": [{"rank": "4", "suit": "hearts"}, {"rank": "6", "suit": "diamonds"}, {"rank": "7", "suit": "clubs"}]}


game_id: 950dd103-fc6c-4a70-9dc8-560a06fdfe77
timestamp: 2026-01-25 00:10:11.693174
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: swapped 7 for 9 at pos 0
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}]

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


game_id: 950dd103-fc6c-4a70-9dc8-560a06fdfe77
timestamp: 2026-01-25 00:10:11.698861
player_id: cpu_1
player_name: Diego
action: draw_deck
card_rank: K
card_suit: spades
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 950dd103-fc6c-4a70-9dc8-560a06fdfe77
timestamp: 2026-01-25 00:10:11.704742
player_id: cpu_1
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 1
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 950dd103-fc6c-4a70-9dc8-560a06fdfe77
timestamp: 2026-01-25 00:10:11.710667
player_id: cpu_2
player_name: Maya
action: take_discard
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "3", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": false}]

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


game_id: 950dd103-fc6c-4a70-9dc8-560a06fdfe77
timestamp: 2026-01-25 00:10:11.717129
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "3", "suit": "diamonds"}
decision_reason: swapped 5 for 3 at pos 4
hand_json:
[{"rank": "3", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}]

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


game_id: 950dd103-fc6c-4a70-9dc8-560a06fdfe77
timestamp: 2026-01-25 00:10:11.724746
player_id: cpu_3
player_name: River
action: take_discard
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}]

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


game_id: 950dd103-fc6c-4a70-9dc8-560a06fdfe77
timestamp: 2026-01-25 00:10:11.730690
player_id: cpu_3
player_name: River
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped 3 for 7 at pos 5
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: 950dd103-fc6c-4a70-9dc8-560a06fdfe77
timestamp: 2026-01-25 00:10:11.736473
player_id: cpu_0
player_name: Marcus
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": "7", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}]

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


game_id: 950dd103-fc6c-4a70-9dc8-560a06fdfe77
timestamp: 2026-01-25 00:10:11.742238
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: swapped 7 for 10 at pos 3
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}]

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


game_id: 950dd103-fc6c-4a70-9dc8-560a06fdfe77
timestamp: 2026-01-25 00:10:11.748141
player_id: cpu_1
player_name: Diego
action: draw_deck
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 950dd103-fc6c-4a70-9dc8-560a06fdfe77
timestamp: 2026-01-25 00:10:11.754065
player_id: cpu_1
player_name: Diego
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: swapped 4 for 8 at pos 4
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 950dd103-fc6c-4a70-9dc8-560a06fdfe77
timestamp: 2026-01-25 00:10:11.760308
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: J
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}]

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


game_id: 950dd103-fc6c-4a70-9dc8-560a06fdfe77
timestamp: 2026-01-25 00:10:11.767524
player_id: cpu_2
player_name: Maya
action: swap
card_rank: J
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: swapped J for 8 at pos 5
hand_json:
[{"rank": "3", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": true}]

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


game_id: 950dd103-fc6c-4a70-9dc8-560a06fdfe77
timestamp: 2026-01-25 00:10:11.775157
player_id: cpu_3
player_name: River
action: draw_deck
card_rank: Q
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: 950dd103-fc6c-4a70-9dc8-560a06fdfe77
timestamp: 2026-01-25 00:10:11.788548
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: 10
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}]

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


game_id: 950dd103-fc6c-4a70-9dc8-560a06fdfe77
timestamp: 2026-01-25 00:10:11.801850
player_id: cpu_1
player_name: Diego
action: draw_deck
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 950dd103-fc6c-4a70-9dc8-560a06fdfe77
timestamp: 2026-01-25 00:10:11.810496
player_id: cpu_1
player_name: Diego
action: swap
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: swapped 2 for 4 at pos 4
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 950dd103-fc6c-4a70-9dc8-560a06fdfe77
timestamp: 2026-01-25 00:10:11.820705
player_id: cpu_2
player_name: Maya
action: take_discard
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "3", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": true}]

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


game_id: 950dd103-fc6c-4a70-9dc8-560a06fdfe77
timestamp: 2026-01-25 00:10:11.826825
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: swapped 4 for J at pos 5
hand_json:
[{"rank": "3", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 950dd103-fc6c-4a70-9dc8-560a06fdfe77
timestamp: 2026-01-25 00:10:11.833068
player_id: cpu_3
player_name: River
action: draw_deck
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Marcus": [{"rank": "7", "suit": "diamonds"}, {"rank": "7", "suit": "clubs"}, {"rank": "8", "suit": "diamonds"}], "Diego": [{"rank": "2", "suit": "diamonds"}, {"rank": "K", "suit": "spades"}, {"rank": "2", "suit": "spades"}, {"rank": "2", "suit": "clubs"}], "Maya": [{"rank": "5", "suit": "diamonds"}, {"rank": "7", "suit": "hearts"}, {"rank": "A", "suit": "hearts"}, {"rank": "5", "suit": "hearts"}, {"rank": "4", "suit": "clubs"}]}


game_id: 950dd103-fc6c-4a70-9dc8-560a06fdfe77
timestamp: 2026-01-25 00:10:11.839262
player_id: cpu_3
player_name: River
action: swap
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped K for 6 at pos 2
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: 950dd103-fc6c-4a70-9dc8-560a06fdfe77
timestamp: 2026-01-25 00:10:11.845300
player_id: cpu_0
player_name: Marcus
action: take_discard
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: took 6 from discard
visible_opponents_json:
{"Diego": [{"rank": "2", "suit": "diamonds"}, {"rank": "K", "suit": "spades"}, {"rank": "2", "suit": "spades"}, {"rank": "2", "suit": "clubs"}], "Maya": [{"rank": "5", "suit": "diamonds"}, {"rank": "7", "suit": "hearts"}, {"rank": "A", "suit": "hearts"}, {"rank": "5", "suit": "hearts"}, {"rank": "4", "suit": "clubs"}], "River": [{"rank": "4", "suit": "hearts"}, {"rank": "K", "suit": "hearts"}, {"rank": "3", "suit": "diamonds"}]}


game_id: 950dd103-fc6c-4a70-9dc8-560a06fdfe77
timestamp: 2026-01-25 00:10:11.851179
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: swapped 6 for 8 at pos 4
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}]

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


game_id: 950dd103-fc6c-4a70-9dc8-560a06fdfe77
timestamp: 2026-01-25 00:10:11.857491
player_id: cpu_1
player_name: Diego
action: draw_deck
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 950dd103-fc6c-4a70-9dc8-560a06fdfe77
timestamp: 2026-01-25 00:10:11.863366
player_id: cpu_1
player_name: Diego
action: swap
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped 2 for 5 at pos 3
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 950dd103-fc6c-4a70-9dc8-560a06fdfe77
timestamp: 2026-01-25 00:10:11.869820
player_id: cpu_2
player_name: Maya
action: take_discard
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "3", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 950dd103-fc6c-4a70-9dc8-560a06fdfe77
timestamp: 2026-01-25 00:10:11.876738
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped 5 for 7 at pos 2
hand_json:
[{"rank": "3", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 950dd103-fc6c-4a70-9dc8-560a06fdfe77
timestamp: 2026-01-25 00:10:11.883217
player_id: cpu_3
player_name: River
action: take_discard
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: 950dd103-fc6c-4a70-9dc8-560a06fdfe77
timestamp: 2026-01-25 00:10:11.889710
player_id: cpu_3
player_name: River
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: swapped 7 for 4 at pos 3
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: 950dd103-fc6c-4a70-9dc8-560a06fdfe77
timestamp: 2026-01-25 00:10:11.895894
player_id: cpu_0
player_name: Marcus
action: take_discard
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}]

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


game_id: 950dd103-fc6c-4a70-9dc8-560a06fdfe77
timestamp: 2026-01-25 00:10:11.902251
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 4 for 7 at pos 0
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}]

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


game_id: 950dd103-fc6c-4a70-9dc8-560a06fdfe77
timestamp: 2026-01-25 00:10:11.908536
player_id: cpu_1
player_name: Diego
action: take_discard
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 950dd103-fc6c-4a70-9dc8-560a06fdfe77
timestamp: 2026-01-25 00:10:11.914682
player_id: cpu_1
player_name: Diego
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "K", "suit": "diamonds"}
decision_reason: swapped 7 for K at pos 2
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 950dd103-fc6c-4a70-9dc8-560a06fdfe77
timestamp: 2026-01-25 00:10:11.921156
player_id: cpu_2
player_name: Maya
action: take_discard
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: took K from discard
hand_json:
[{"rank": "3", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 950dd103-fc6c-4a70-9dc8-560a06fdfe77
timestamp: 2026-01-25 00:10:11.927603
player_id: cpu_2
player_name: Maya
action: swap
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped K for 5 at pos 1
hand_json:
[{"rank": "3", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 950dd103-fc6c-4a70-9dc8-560a06fdfe77
timestamp: 2026-01-25 00:10:11.933616
player_id: cpu_3
player_name: River
action: take_discard
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: 950dd103-fc6c-4a70-9dc8-560a06fdfe77
timestamp: 2026-01-25 00:10:11.939388
player_id: cpu_3
player_name: River
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped 5 for 7 at pos 3
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: 950dd103-fc6c-4a70-9dc8-560a06fdfe77
timestamp: 2026-01-25 00:10:11.945444
player_id: cpu_0
player_name: Marcus
action: take_discard
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}]

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


game_id: 950dd103-fc6c-4a70-9dc8-560a06fdfe77
timestamp: 2026-01-25 00:10:11.951382
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: swapped 7 for 10 at pos 1
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": true}]

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


game_id: 755c7c18-6d2f-4dd6-92c3-2cd23e65c413
timestamp: 2026-01-25 00:10:11.969181
player_id: cpu_0
player_name: River
action: take_discard
card_rank: 5
card_suit: clubs
decision_reason: took 5 from discard
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}]

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


game_id: 755c7c18-6d2f-4dd6-92c3-2cd23e65c413
timestamp: 2026-01-25 00:10:11.975191
player_id: cpu_0
player_name: River
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: swapped 5 for 4 at pos 2
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}]

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


game_id: 755c7c18-6d2f-4dd6-92c3-2cd23e65c413
timestamp: 2026-01-25 00:10:11.981187
player_id: cpu_1
player_name: Sofia
action: take_discard
card_rank: 4
card_suit: diamonds
decision_reason: took 4 from discard
hand_json:
[{"rank": "4", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}]

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


game_id: 755c7c18-6d2f-4dd6-92c3-2cd23e65c413
timestamp: 2026-01-25 00:10:11.987012
player_id: cpu_1
player_name: Sofia
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: swapped 4 for 9 at pos 4
hand_json:
[{"rank": "4", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}]

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


game_id: 755c7c18-6d2f-4dd6-92c3-2cd23e65c413
timestamp: 2026-01-25 00:10:11.993052
player_id: cpu_2
player_name: Sage
action: take_discard
card_rank: 9
card_suit: spades
decision_reason: took 9 from discard
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}]

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


game_id: 755c7c18-6d2f-4dd6-92c3-2cd23e65c413
timestamp: 2026-01-25 00:10:11.999056
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 9
card_suit: spades
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: swapped 9 for 4 at pos 5
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": true}]

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


game_id: 755c7c18-6d2f-4dd6-92c3-2cd23e65c413
timestamp: 2026-01-25 00:10:12.005151
player_id: cpu_3
player_name: Marcus
action: take_discard
card_rank: 4
card_suit: clubs
decision_reason: took 4 from discard
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}]

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


game_id: 755c7c18-6d2f-4dd6-92c3-2cd23e65c413
timestamp: 2026-01-25 00:10:12.011013
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: swapped 4 for Q at pos 3
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}]

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


game_id: 755c7c18-6d2f-4dd6-92c3-2cd23e65c413
timestamp: 2026-01-25 00:10:12.016847
player_id: cpu_0
player_name: River
action: draw_deck
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}]

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


game_id: 755c7c18-6d2f-4dd6-92c3-2cd23e65c413
timestamp: 2026-01-25 00:10:12.022407
player_id: cpu_0
player_name: River
action: swap
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped 2 for 5 at pos 2
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}]

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


game_id: 755c7c18-6d2f-4dd6-92c3-2cd23e65c413
timestamp: 2026-01-25 00:10:12.028427
player_id: cpu_1
player_name: Sofia
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": "4", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}]

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


game_id: 755c7c18-6d2f-4dd6-92c3-2cd23e65c413
timestamp: 2026-01-25 00:10:12.034450
player_id: cpu_1
player_name: Sofia
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: swapped 5 for 9 at pos 5
hand_json:
[{"rank": "4", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: 755c7c18-6d2f-4dd6-92c3-2cd23e65c413
timestamp: 2026-01-25 00:10:12.040403
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: 10
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": true}]

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


game_id: 755c7c18-6d2f-4dd6-92c3-2cd23e65c413
timestamp: 2026-01-25 00:10:12.053184
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}]

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


game_id: 755c7c18-6d2f-4dd6-92c3-2cd23e65c413
timestamp: 2026-01-25 00:10:12.070673
player_id: cpu_0
player_name: River
action: draw_deck
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}]

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


game_id: 755c7c18-6d2f-4dd6-92c3-2cd23e65c413
timestamp: 2026-01-25 00:10:12.076721
player_id: cpu_0
player_name: River
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped 3 for 5 at pos 5
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 755c7c18-6d2f-4dd6-92c3-2cd23e65c413
timestamp: 2026-01-25 00:10:12.082963
player_id: cpu_1
player_name: Sofia
action: take_discard
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "4", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: 755c7c18-6d2f-4dd6-92c3-2cd23e65c413
timestamp: 2026-01-25 00:10:12.090977
player_id: cpu_1
player_name: Sofia
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: swapped 5 for 9 at pos 3
hand_json:
[{"rank": "4", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: 755c7c18-6d2f-4dd6-92c3-2cd23e65c413
timestamp: 2026-01-25 00:10:12.097170
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: 10
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"River": [{"rank": "2", "suit": "clubs"}, {"rank": "2", "suit": "hearts"}, {"rank": "3", "suit": "spades"}], "Sofia": [{"rank": "5", "suit": "spades"}, {"rank": "5", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}, {"rank": "5", "suit": "clubs"}], "Marcus": [{"rank": "6", "suit": "diamonds"}, {"rank": "4", "suit": "clubs"}]}


game_id: 755c7c18-6d2f-4dd6-92c3-2cd23e65c413
timestamp: 2026-01-25 00:10:12.108850
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"River": [{"rank": "2", "suit": "clubs"}, {"rank": "2", "suit": "hearts"}, {"rank": "3", "suit": "spades"}], "Sofia": [{"rank": "5", "suit": "spades"}, {"rank": "5", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}, {"rank": "5", "suit": "clubs"}], "Sage": [{"rank": "9", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}, {"rank": "9", "suit": "spades"}]}


game_id: 755c7c18-6d2f-4dd6-92c3-2cd23e65c413
timestamp: 2026-01-25 00:10:12.114871
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: swapped 7 for J at pos 0
hand_json:
[{"rank": "7", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}]

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


game_id: 755c7c18-6d2f-4dd6-92c3-2cd23e65c413
timestamp: 2026-01-25 00:10:12.121163
player_id: cpu_0
player_name: River
action: draw_deck
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 755c7c18-6d2f-4dd6-92c3-2cd23e65c413
timestamp: 2026-01-25 00:10:12.127016
player_id: cpu_0
player_name: River
action: swap
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "3", "suit": "spades"}
decision_reason: swapped K for 3 at pos 5
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: 755c7c18-6d2f-4dd6-92c3-2cd23e65c413
timestamp: 2026-01-25 00:10:12.133168
player_id: cpu_1
player_name: Sofia
action: take_discard
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "4", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: 755c7c18-6d2f-4dd6-92c3-2cd23e65c413
timestamp: 2026-01-25 00:10:12.139328
player_id: cpu_1
player_name: Sofia
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped 3 for 5 at pos 2
hand_json:
[{"rank": "4", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: 755c7c18-6d2f-4dd6-92c3-2cd23e65c413
timestamp: 2026-01-25 00:10:12.145262
player_id: cpu_2
player_name: Sage
action: take_discard
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: took 5 from discard
visible_opponents_json:
{"River": [{"rank": "2", "suit": "clubs"}, {"rank": "2", "suit": "hearts"}, {"rank": "K", "suit": "clubs"}], "Sofia": [{"rank": "3", "suit": "spades"}, {"rank": "5", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}, {"rank": "5", "suit": "clubs"}], "Marcus": [{"rank": "7", "suit": "spades"}, {"rank": "6", "suit": "diamonds"}, {"rank": "4", "suit": "clubs"}]}


game_id: 755c7c18-6d2f-4dd6-92c3-2cd23e65c413
timestamp: 2026-01-25 00:10:12.151161
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: swapped 5 for 9 at pos 2
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": true}]

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


game_id: 755c7c18-6d2f-4dd6-92c3-2cd23e65c413
timestamp: 2026-01-25 00:10:12.157395
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}]

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


game_id: 755c7c18-6d2f-4dd6-92c3-2cd23e65c413
timestamp: 2026-01-25 00:10:12.163519
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped 3 for 7 at pos 0
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}]

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


game_id: 755c7c18-6d2f-4dd6-92c3-2cd23e65c413
timestamp: 2026-01-25 00:10:12.169161
player_id: cpu_0
player_name: River
action: take_discard
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: 755c7c18-6d2f-4dd6-92c3-2cd23e65c413
timestamp: 2026-01-25 00:10:12.174887
player_id: cpu_0
player_name: River
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: swapped 7 for 8 at pos 3
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: 755c7c18-6d2f-4dd6-92c3-2cd23e65c413
timestamp: 2026-01-25 00:10:12.180847
player_id: cpu_1
player_name: Sofia
action: draw_deck
card_rank: 10
card_suit: spades
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: 755c7c18-6d2f-4dd6-92c3-2cd23e65c413
timestamp: 2026-01-25 00:10:12.192387
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: Q
card_suit: spades
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": true}]

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


game_id: 755c7c18-6d2f-4dd6-92c3-2cd23e65c413
timestamp: 2026-01-25 00:10:12.205688
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 8
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}]

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


game_id: 755c7c18-6d2f-4dd6-92c3-2cd23e65c413
timestamp: 2026-01-25 00:10:12.225060
player_id: cpu_0
player_name: River
action: swap
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped 2 for 7 at pos 3
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}]


game_id: 755c7c18-6d2f-4dd6-92c3-2cd23e65c413
timestamp: 2026-01-25 00:10:12.231217
player_id: cpu_1
player_name: Sofia
action: take_discard
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: took 7 from discard
visible_opponents_json:
{"River": [{"rank": "2", "suit": "clubs"}, {"rank": "2", "suit": "hearts"}, {"rank": "2", "suit": "diamonds"}, {"rank": "K", "suit": "clubs"}], "Sage": [{"rank": "5", "suit": "spades"}, {"rank": "K", "suit": "hearts"}, {"rank": "9", "suit": "spades"}], "Marcus": [{"rank": "3", "suit": "diamonds"}, {"rank": "6", "suit": "diamonds"}, {"rank": "4", "suit": "clubs"}]}


game_id: 755c7c18-6d2f-4dd6-92c3-2cd23e65c413
timestamp: 2026-01-25 00:10:12.237300
player_id: cpu_1
player_name: Sofia
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped 7 for 5 at pos 1
hand_json:
[{"rank": "4", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: 755c7c18-6d2f-4dd6-92c3-2cd23e65c413
timestamp: 2026-01-25 00:10:12.243323
player_id: cpu_2
player_name: Sage
action: take_discard
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: took 5 from discard
visible_opponents_json:
{"River": [{"rank": "2", "suit": "clubs"}, {"rank": "2", "suit": "hearts"}, {"rank": "2", "suit": "diamonds"}, {"rank": "K", "suit": "clubs"}], "Sofia": [{"rank": "7", "suit": "spades"}, {"rank": "3", "suit": "spades"}, {"rank": "5", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}, {"rank": "5", "suit": "clubs"}], "Marcus": [{"rank": "3", "suit": "diamonds"}, {"rank": "6", "suit": "diamonds"}, {"rank": "4", "suit": "clubs"}]}


game_id: 755c7c18-6d2f-4dd6-92c3-2cd23e65c413
timestamp: 2026-01-25 00:10:12.249321
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: swapped 5 for 9 at pos 5
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: 755c7c18-6d2f-4dd6-92c3-2cd23e65c413
timestamp: 2026-01-25 00:10:12.255607
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"River": [{"rank": "2", "suit": "clubs"}, {"rank": "2", "suit": "hearts"}, {"rank": "2", "suit": "diamonds"}, {"rank": "K", "suit": "clubs"}], "Sofia": [{"rank": "7", "suit": "spades"}, {"rank": "3", "suit": "spades"}, {"rank": "5", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}, {"rank": "5", "suit": "clubs"}], "Sage": [{"rank": "5", "suit": "spades"}, {"rank": "K", "suit": "hearts"}, {"rank": "5", "suit": "hearts"}]}


game_id: 755c7c18-6d2f-4dd6-92c3-2cd23e65c413
timestamp: 2026-01-25 00:10:12.261603
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: swapped 7 for J at pos 2
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}]

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


game_id: 755c7c18-6d2f-4dd6-92c3-2cd23e65c413
timestamp: 2026-01-25 00:10:12.268637
player_id: cpu_0
player_name: River
action: draw_deck
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: 755c7c18-6d2f-4dd6-92c3-2cd23e65c413
timestamp: 2026-01-25 00:10:12.274837
player_id: cpu_0
player_name: River
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "A", "suit": "clubs"}
decision_reason: swapped 6 for A at pos 4
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: 755c7c18-6d2f-4dd6-92c3-2cd23e65c413
timestamp: 2026-01-25 00:10:12.280905
player_id: cpu_1
player_name: Sofia
action: take_discard
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: took A from discard
hand_json:
[{"rank": "4", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: 755c7c18-6d2f-4dd6-92c3-2cd23e65c413
timestamp: 2026-01-25 00:10:12.286803
player_id: cpu_1
player_name: Sofia
action: swap
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped A for 7 at pos 1
hand_json:
[{"rank": "4", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: 755c7c18-6d2f-4dd6-92c3-2cd23e65c413
timestamp: 2026-01-25 00:10:12.292919
player_id: cpu_2
player_name: Sage
action: take_discard
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: 755c7c18-6d2f-4dd6-92c3-2cd23e65c413
timestamp: 2026-01-25 00:10:12.298848
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: swapped 7 for 4 at pos 1
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: 755c7c18-6d2f-4dd6-92c3-2cd23e65c413
timestamp: 2026-01-25 00:10:12.305143
player_id: cpu_3
player_name: Marcus
action: take_discard
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}]

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


game_id: 755c7c18-6d2f-4dd6-92c3-2cd23e65c413
timestamp: 2026-01-25 00:10:12.311015
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped 4 for 7 at pos 2
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}]

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


game_id: 755c7c18-6d2f-4dd6-92c3-2cd23e65c413
timestamp: 2026-01-25 00:10:12.316893
player_id: cpu_0
player_name: River
action: take_discard
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: 755c7c18-6d2f-4dd6-92c3-2cd23e65c413
timestamp: 2026-01-25 00:10:12.322691
player_id: cpu_0
player_name: River
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "A", "suit": "hearts"}
decision_reason: swapped 7 for A at pos 0
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: 755c7c18-6d2f-4dd6-92c3-2cd23e65c413
timestamp: 2026-01-25 00:10:12.328464
player_id: cpu_1
player_name: Sofia
action: take_discard
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: took A from discard
hand_json:
[{"rank": "4", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: 755c7c18-6d2f-4dd6-92c3-2cd23e65c413
timestamp: 2026-01-25 00:10:12.334165
player_id: cpu_1
player_name: Sofia
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped A for 5 at pos 3
hand_json:
[{"rank": "4", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: 755c7c18-6d2f-4dd6-92c3-2cd23e65c413
timestamp: 2026-01-25 00:10:12.339921
player_id: cpu_2
player_name: Sage
action: take_discard
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: 755c7c18-6d2f-4dd6-92c3-2cd23e65c413
timestamp: 2026-01-25 00:10:12.346009
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped 5 for 7 at pos 1
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: 755c7c18-6d2f-4dd6-92c3-2cd23e65c413
timestamp: 2026-01-25 00:10:12.352396
player_id: cpu_3
player_name: Marcus
action: take_discard
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}]

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


game_id: 755c7c18-6d2f-4dd6-92c3-2cd23e65c413
timestamp: 2026-01-25 00:10:12.359079
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 7 for 7 at pos 5
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}]

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


game_id: c6e06b62-dab5-4c4f-8215-cc91fa87955d
timestamp: 2026-01-25 00:10:12.376566
player_id: cpu_0
player_name: Diego
action: take_discard
card_rank: Q
card_suit: diamonds
decision_reason: took Q from discard
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}]

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


game_id: c6e06b62-dab5-4c4f-8215-cc91fa87955d
timestamp: 2026-01-25 00:10:12.382480
player_id: cpu_0
player_name: Diego
action: swap
card_rank: Q
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped Q for 7 at pos 0
hand_json:
[{"rank": "Q", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}]

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


game_id: c6e06b62-dab5-4c4f-8215-cc91fa87955d
timestamp: 2026-01-25 00:10:12.392104
player_id: cpu_1
player_name: Sofia
action: take_discard
card_rank: 7
card_suit: clubs
decision_reason: took 7 from discard
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": true}]

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


game_id: c6e06b62-dab5-4c4f-8215-cc91fa87955d
timestamp: 2026-01-25 00:10:12.398001
player_id: cpu_1
player_name: Sofia
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: swapped 7 for J at pos 5
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}]

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


game_id: c6e06b62-dab5-4c4f-8215-cc91fa87955d
timestamp: 2026-01-25 00:10:12.403893
player_id: cpu_2
player_name: Sage
action: take_discard
card_rank: J
card_suit: clubs
decision_reason: took J from discard
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": true}]

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


game_id: c6e06b62-dab5-4c4f-8215-cc91fa87955d
timestamp: 2026-01-25 00:10:12.409959
player_id: cpu_2
player_name: Sage
action: swap
card_rank: J
card_suit: clubs
discard_top_json: {"rank": "3", "suit": "hearts"}
decision_reason: swapped J for 3 at pos 2
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": true}]

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


game_id: c6e06b62-dab5-4c4f-8215-cc91fa87955d
timestamp: 2026-01-25 00:10:12.416087
player_id: cpu_3
player_name: Marcus
action: take_discard
card_rank: 3
card_suit: hearts
decision_reason: took 3 from discard
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: c6e06b62-dab5-4c4f-8215-cc91fa87955d
timestamp: 2026-01-25 00:10:12.422410
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: swapped 3 for 4 at pos 0
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: c6e06b62-dab5-4c4f-8215-cc91fa87955d
timestamp: 2026-01-25 00:10:12.428236
player_id: cpu_0
player_name: Diego
action: take_discard
card_rank: 4
card_suit: hearts
decision_reason: took 4 from discard
hand_json:
[{"rank": "Q", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}]

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


game_id: c6e06b62-dab5-4c4f-8215-cc91fa87955d
timestamp: 2026-01-25 00:10:12.433927
player_id: cpu_0
player_name: Diego
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: swapped 4 for Q at pos 0
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}]

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


game_id: c6e06b62-dab5-4c4f-8215-cc91fa87955d
timestamp: 2026-01-25 00:10:12.440115
player_id: cpu_1
player_name: Sofia
action: draw_deck
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}]

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


game_id: c6e06b62-dab5-4c4f-8215-cc91fa87955d
timestamp: 2026-01-25 00:10:12.454900
player_id: cpu_2
player_name: Sage
action: take_discard
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": true}]

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


game_id: c6e06b62-dab5-4c4f-8215-cc91fa87955d
timestamp: 2026-01-25 00:10:12.460519
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: swapped 6 for J at pos 2
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": true}]

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


game_id: c6e06b62-dab5-4c4f-8215-cc91fa87955d
timestamp: 2026-01-25 00:10:12.466143
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: K
card_suit: spades
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: c6e06b62-dab5-4c4f-8215-cc91fa87955d
timestamp: 2026-01-25 00:10:12.475454
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: K
card_suit: spades
discard_top_json: {"rank": "3", "suit": "hearts"}
decision_reason: swapped K for 3 at pos 0
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: c6e06b62-dab5-4c4f-8215-cc91fa87955d
timestamp: 2026-01-25 00:10:12.481557
player_id: cpu_0
player_name: Diego
action: take_discard
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}]

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


game_id: c6e06b62-dab5-4c4f-8215-cc91fa87955d
timestamp: 2026-01-25 00:10:12.487423
player_id: cpu_0
player_name: Diego
action: swap
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: swapped 3 for J at pos 5
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: c6e06b62-dab5-4c4f-8215-cc91fa87955d
timestamp: 2026-01-25 00:10:12.496175
player_id: cpu_1
player_name: Sofia
action: draw_deck
card_rank: 8
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Diego": [{"rank": "4", "suit": "hearts"}, {"rank": "5", "suit": "clubs"}, {"rank": "Q", "suit": "clubs"}, {"rank": "3", "suit": "hearts"}], "Sage": [{"rank": "4", "suit": "clubs"}, {"rank": "6", "suit": "diamonds"}, {"rank": "J", "suit": "spades"}], "Marcus": [{"rank": "K", "suit": "spades"}, {"rank": "2", "suit": "spades"}, {"rank": "3", "suit": "diamonds"}]}


game_id: c6e06b62-dab5-4c4f-8215-cc91fa87955d
timestamp: 2026-01-25 00:10:12.508685
player_id: cpu_2
player_name: Sage
action: take_discard
card_rank: 8
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: took 8 from discard
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": true}]

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


game_id: c6e06b62-dab5-4c4f-8215-cc91fa87955d
timestamp: 2026-01-25 00:10:12.515146
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 8
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: swapped 8 for J at pos 5
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}]

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


game_id: c6e06b62-dab5-4c4f-8215-cc91fa87955d
timestamp: 2026-01-25 00:10:12.521114
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: c6e06b62-dab5-4c4f-8215-cc91fa87955d
timestamp: 2026-01-25 00:10:12.526955
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "3", "suit": "diamonds"}
decision_reason: swapped A for 3 at pos 3
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: c6e06b62-dab5-4c4f-8215-cc91fa87955d
timestamp: 2026-01-25 00:10:12.532642
player_id: cpu_0
player_name: Diego
action: take_discard
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: c6e06b62-dab5-4c4f-8215-cc91fa87955d
timestamp: 2026-01-25 00:10:12.538746
player_id: cpu_0
player_name: Diego
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: swapped 3 for 8 at pos 2
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: c6e06b62-dab5-4c4f-8215-cc91fa87955d
timestamp: 2026-01-25 00:10:12.544206
player_id: cpu_1
player_name: Sofia
action: draw_deck
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Diego": [{"rank": "4", "suit": "hearts"}, {"rank": "5", "suit": "clubs"}, {"rank": "3", "suit": "diamonds"}, {"rank": "Q", "suit": "clubs"}, {"rank": "3", "suit": "hearts"}], "Sage": [{"rank": "4", "suit": "clubs"}, {"rank": "6", "suit": "diamonds"}, {"rank": "8", "suit": "diamonds"}], "Marcus": [{"rank": "K", "suit": "spades"}, {"rank": "2", "suit": "spades"}, {"rank": "A", "suit": "hearts"}]}


game_id: c6e06b62-dab5-4c4f-8215-cc91fa87955d
timestamp: 2026-01-25 00:10:12.550401
player_id: cpu_1
player_name: Sofia
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped 5 for 7 at pos 5
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}]

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


game_id: c6e06b62-dab5-4c4f-8215-cc91fa87955d
timestamp: 2026-01-25 00:10:12.556744
player_id: cpu_2
player_name: Sage
action: take_discard
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}]

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


game_id: c6e06b62-dab5-4c4f-8215-cc91fa87955d
timestamp: 2026-01-25 00:10:12.562506
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: swapped 7 for 8 at pos 5
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}]

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


game_id: c6e06b62-dab5-4c4f-8215-cc91fa87955d
timestamp: 2026-01-25 00:10:12.568802
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: J
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: c6e06b62-dab5-4c4f-8215-cc91fa87955d
timestamp: 2026-01-25 00:10:12.581167
player_id: cpu_0
player_name: Diego
action: draw_deck
card_rank: 5
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": "5", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: c6e06b62-dab5-4c4f-8215-cc91fa87955d
timestamp: 2026-01-25 00:10:12.587077
player_id: cpu_0
player_name: Diego
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: swapped 5 for 9 at pos 4
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: c6e06b62-dab5-4c4f-8215-cc91fa87955d
timestamp: 2026-01-25 00:10:12.593125
player_id: cpu_1
player_name: Sofia
action: draw_deck
card_rank: 9
card_suit: spades
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}]

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


game_id: c6e06b62-dab5-4c4f-8215-cc91fa87955d
timestamp: 2026-01-25 00:10:12.604527
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: Q
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": "Q", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}]

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


game_id: c6e06b62-dab5-4c4f-8215-cc91fa87955d
timestamp: 2026-01-25 00:10:12.615731
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Diego": [{"rank": "4", "suit": "hearts"}, {"rank": "5", "suit": "clubs"}, {"rank": "3", "suit": "diamonds"}, {"rank": "Q", "suit": "clubs"}, {"rank": "5", "suit": "hearts"}, {"rank": "3", "suit": "hearts"}], "Sofia": [{"rank": "A", "suit": "diamonds"}, {"rank": "5", "suit": "diamonds"}], "Sage": [{"rank": "4", "suit": "clubs"}, {"rank": "6", "suit": "diamonds"}, {"rank": "7", "suit": "clubs"}]}


game_id: c6e06b62-dab5-4c4f-8215-cc91fa87955d
timestamp: 2026-01-25 00:10:12.621250
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "A", "suit": "hearts"}
decision_reason: swapped 2 for A at pos 3
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: d3b224b6-e959-4212-966b-eafa220ccfb3
timestamp: 2026-01-25 00:10:12.640182
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}]

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


game_id: d3b224b6-e959-4212-966b-eafa220ccfb3
timestamp: 2026-01-25 00:10:12.646312
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 5 for 7 at pos 3
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}]

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


game_id: d3b224b6-e959-4212-966b-eafa220ccfb3
timestamp: 2026-01-25 00:10:12.652378
player_id: cpu_1
player_name: Kenji
action: take_discard
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "2", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}]

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


game_id: d3b224b6-e959-4212-966b-eafa220ccfb3
timestamp: 2026-01-25 00:10:12.657864
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: swapped 7 for Q at pos 4
hand_json:
[{"rank": "2", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}]

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


game_id: d3b224b6-e959-4212-966b-eafa220ccfb3
timestamp: 2026-01-25 00:10:12.663540
player_id: cpu_2
player_name: Diego
action: draw_deck
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: d3b224b6-e959-4212-966b-eafa220ccfb3
timestamp: 2026-01-25 00:10:12.669206
player_id: cpu_2
player_name: Diego
action: swap
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "3", "suit": "spades"}
decision_reason: swapped A for 3 at pos 1
hand_json:
[{"rank": "J", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: d3b224b6-e959-4212-966b-eafa220ccfb3
timestamp: 2026-01-25 00:10:12.674878
player_id: cpu_3
player_name: Priya
action: take_discard
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}]

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


game_id: d3b224b6-e959-4212-966b-eafa220ccfb3
timestamp: 2026-01-25 00:10:12.680393
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped 3 for 6 at pos 4
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}]

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


game_id: d3b224b6-e959-4212-966b-eafa220ccfb3
timestamp: 2026-01-25 00:10:12.686050
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}]

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


game_id: d3b224b6-e959-4212-966b-eafa220ccfb3
timestamp: 2026-01-25 00:10:12.692257
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: swapped 4 for 8 at pos 4
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}]

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


game_id: d3b224b6-e959-4212-966b-eafa220ccfb3
timestamp: 2026-01-25 00:10:12.698593
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}]

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


game_id: d3b224b6-e959-4212-966b-eafa220ccfb3
timestamp: 2026-01-25 00:10:12.704681
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 5 for 7 at pos 4
hand_json:
[{"rank": "2", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}]

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


game_id: d3b224b6-e959-4212-966b-eafa220ccfb3
timestamp: 2026-01-25 00:10:12.710690
player_id: cpu_2
player_name: Diego
action: draw_deck
card_rank: Q
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: d3b224b6-e959-4212-966b-eafa220ccfb3
timestamp: 2026-01-25 00:10:12.723040
player_id: cpu_3
player_name: Priya
action: draw_deck
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}]

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


game_id: d3b224b6-e959-4212-966b-eafa220ccfb3
timestamp: 2026-01-25 00:10:12.734751
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: 9
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}]

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


game_id: d3b224b6-e959-4212-966b-eafa220ccfb3
timestamp: 2026-01-25 00:10:12.752185
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped 2 for 5 at pos 4
hand_json:
[{"rank": "2", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}]


game_id: d3b224b6-e959-4212-966b-eafa220ccfb3
timestamp: 2026-01-25 00:10:12.758147
player_id: cpu_2
player_name: Diego
action: take_discard
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took 5 from discard
visible_opponents_json:
{"Sofia": [{"rank": "K", "suit": "diamonds"}, {"rank": "5", "suit": "spades"}, {"rank": "4", "suit": "hearts"}], "Kenji": [{"rank": "4", "suit": "diamonds"}, {"rank": "2", "suit": "clubs"}], "Priya": [{"rank": "A", "suit": "hearts"}, {"rank": "3", "suit": "spades"}]}


game_id: d3b224b6-e959-4212-966b-eafa220ccfb3
timestamp: 2026-01-25 00:10:12.764009
player_id: cpu_2
player_name: Diego
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": "J", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: d3b224b6-e959-4212-966b-eafa220ccfb3
timestamp: 2026-01-25 00:10:12.769986
player_id: cpu_3
player_name: Priya
action: take_discard
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took 6 from discard
visible_opponents_json:
{"Sofia": [{"rank": "K", "suit": "diamonds"}, {"rank": "5", "suit": "spades"}, {"rank": "4", "suit": "hearts"}], "Kenji": [{"rank": "4", "suit": "diamonds"}, {"rank": "2", "suit": "clubs"}], "Diego": [{"rank": "A", "suit": "clubs"}, {"rank": "5", "suit": "diamonds"}, {"rank": "K", "suit": "hearts"}]}


game_id: d3b224b6-e959-4212-966b-eafa220ccfb3
timestamp: 2026-01-25 00:10:12.775744
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "3", "suit": "clubs"}
decision_reason: swapped 6 for 3 at pos 5
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}]

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


game_id: d3b224b6-e959-4212-966b-eafa220ccfb3
timestamp: 2026-01-25 00:10:12.782004
player_id: cpu_0
player_name: Sofia
action: take_discard
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took 3 from discard
visible_opponents_json:
{"Kenji": [{"rank": "4", "suit": "diamonds"}, {"rank": "2", "suit": "clubs"}], "Diego": [{"rank": "A", "suit": "clubs"}, {"rank": "5", "suit": "diamonds"}, {"rank": "K", "suit": "hearts"}], "Priya": [{"rank": "A", "suit": "hearts"}, {"rank": "3", "suit": "spades"}, {"rank": "6", "suit": "hearts"}]}


game_id: d3b224b6-e959-4212-966b-eafa220ccfb3
timestamp: 2026-01-25 00:10:12.788063
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped 3 for 5 at pos 3
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}]

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


game_id: d3b224b6-e959-4212-966b-eafa220ccfb3
timestamp: 2026-01-25 00:10:12.793927
player_id: cpu_1
player_name: Kenji
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": "2", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}]

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


game_id: d3b224b6-e959-4212-966b-eafa220ccfb3
timestamp: 2026-01-25 00:10:12.799736
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: swapped 5 for J at pos 3
hand_json:
[{"rank": "2", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}]

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


game_id: d3b224b6-e959-4212-966b-eafa220ccfb3
timestamp: 2026-01-25 00:10:12.805439
player_id: cpu_2
player_name: Diego
action: draw_deck
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: d3b224b6-e959-4212-966b-eafa220ccfb3
timestamp: 2026-01-25 00:10:12.811079
player_id: cpu_2
player_name: Diego
action: swap
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped A for 5 at pos 4
hand_json:
[{"rank": "J", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: d3b224b6-e959-4212-966b-eafa220ccfb3
timestamp: 2026-01-25 00:10:12.817535
player_id: cpu_3
player_name: Priya
action: take_discard
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}]

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


game_id: d3b224b6-e959-4212-966b-eafa220ccfb3
timestamp: 2026-01-25 00:10:12.823592
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped 5 for 6 at pos 5
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: d3b224b6-e959-4212-966b-eafa220ccfb3
timestamp: 2026-01-25 00:10:12.829330
player_id: cpu_0
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": "2", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}]

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


game_id: d3b224b6-e959-4212-966b-eafa220ccfb3
timestamp: 2026-01-25 00:10:12.835218
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: swapped 6 for Q at pos 5
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}]

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


game_id: d3b224b6-e959-4212-966b-eafa220ccfb3
timestamp: 2026-01-25 00:10:12.841389
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}]

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


game_id: d3b224b6-e959-4212-966b-eafa220ccfb3
timestamp: 2026-01-25 00:10:12.847327
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped 3 for 5 at pos 3
hand_json:
[{"rank": "2", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}]

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


game_id: d3b224b6-e959-4212-966b-eafa220ccfb3
timestamp: 2026-01-25 00:10:12.853217
player_id: cpu_2
player_name: Diego
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": "J", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: d3b224b6-e959-4212-966b-eafa220ccfb3
timestamp: 2026-01-25 00:10:12.859987
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: swapped 5 for J at pos 0
hand_json:
[{"rank": "5", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: d3b224b6-e959-4212-966b-eafa220ccfb3
timestamp: 2026-01-25 00:10:12.867800
player_id: cpu_3
player_name: Priya
action: draw_deck
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: d3b224b6-e959-4212-966b-eafa220ccfb3
timestamp: 2026-01-25 00:10:12.873834
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped 4 for 5 at pos 5
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: d3b224b6-e959-4212-966b-eafa220ccfb3
timestamp: 2026-01-25 00:10:12.879615
player_id: cpu_0
player_name: Sofia
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": "2", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}]

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


game_id: d3b224b6-e959-4212-966b-eafa220ccfb3
timestamp: 2026-01-25 00:10:12.887716
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "2", "suit": "hearts"}
decision_reason: swapped 5 for 2 at pos 0
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}]

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


game_id: d3b224b6-e959-4212-966b-eafa220ccfb3
timestamp: 2026-01-25 00:10:12.893333
player_id: cpu_1
player_name: Kenji
action: take_discard
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: took 2 from discard
hand_json:
[{"rank": "2", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}]

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


game_id: d3b224b6-e959-4212-966b-eafa220ccfb3
timestamp: 2026-01-25 00:10:12.899341
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: swapped 2 for 4 at pos 2
hand_json:
[{"rank": "2", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}]

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


game_id: d3b224b6-e959-4212-966b-eafa220ccfb3
timestamp: 2026-01-25 00:10:12.905438
player_id: cpu_2
player_name: Diego
action: take_discard
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "5", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: d3b224b6-e959-4212-966b-eafa220ccfb3
timestamp: 2026-01-25 00:10:12.911311
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped 4 for 5 at pos 0
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: d3b224b6-e959-4212-966b-eafa220ccfb3
timestamp: 2026-01-25 00:10:12.917093
player_id: cpu_3
player_name: Priya
action: take_discard
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: d3b224b6-e959-4212-966b-eafa220ccfb3
timestamp: 2026-01-25 00:10:12.922907
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: swapped 5 for Q at pos 1
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: d3b224b6-e959-4212-966b-eafa220ccfb3
timestamp: 2026-01-25 00:10:12.928778
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: 9
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}]

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


game_id: d3b224b6-e959-4212-966b-eafa220ccfb3
timestamp: 2026-01-25 00:10:12.940968
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: 10
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}]

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


game_id: d3b224b6-e959-4212-966b-eafa220ccfb3
timestamp: 2026-01-25 00:10:12.947178
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 10
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: swapped 10 for 10 at pos 1
hand_json:
[{"rank": "2", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}]

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


game_id: d3b224b6-e959-4212-966b-eafa220ccfb3
timestamp: 2026-01-25 00:10:12.953338
player_id: cpu_2
player_name: Diego
action: draw_deck
card_rank: 8
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: d3b224b6-e959-4212-966b-eafa220ccfb3
timestamp: 2026-01-25 00:10:12.959519
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 8
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: swapped 8 for 9 at pos 3
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: d3b224b6-e959-4212-966b-eafa220ccfb3
timestamp: 2026-01-25 00:10:12.965861
player_id: cpu_3
player_name: Priya
action: draw_deck
card_rank: 9
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: d3b224b6-e959-4212-966b-eafa220ccfb3
timestamp: 2026-01-25 00:10:12.971815
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 9
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: swapped 9 for 10 at pos 2
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: d3b224b6-e959-4212-966b-eafa220ccfb3
timestamp: 2026-01-25 00:10:12.977871
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Kenji": [{"rank": "10", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}, {"rank": "3", "suit": "hearts"}, {"rank": "2", "suit": "clubs"}], "Diego": [{"rank": "4", "suit": "diamonds"}, {"rank": "A", "suit": "clubs"}, {"rank": "5", "suit": "diamonds"}, {"rank": "8", "suit": "diamonds"}, {"rank": "A", "suit": "diamonds"}, {"rank": "K", "suit": "hearts"}], "Priya": [{"rank": "A", "suit": "hearts"}, {"rank": "5", "suit": "spades"}, {"rank": "9", "suit": "hearts"}, {"rank": "3", "suit": "spades"}, {"rank": "4", "suit": "clubs"}]}


game_id: d3b224b6-e959-4212-966b-eafa220ccfb3
timestamp: 2026-01-25 00:10:12.983601
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: swapped 4 for 8 at pos 1
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}]

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


game_id: d3b224b6-e959-4212-966b-eafa220ccfb3
timestamp: 2026-01-25 00:10:12.989661
player_id: cpu_1
player_name: Kenji
action: take_discard
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: took 8 from discard
hand_json:
[{"rank": "2", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}]

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


game_id: d3b224b6-e959-4212-966b-eafa220ccfb3
timestamp: 2026-01-25 00:10:12.995675
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: swapped 8 for 10 at pos 1
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}]

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


game_id: 76071c00-95e0-4279-8258-e6bec85d9b6d
timestamp: 2026-01-25 00:10:13.013363
player_id: cpu_0
player_name: Maya
action: draw_deck
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}]

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


game_id: 76071c00-95e0-4279-8258-e6bec85d9b6d
timestamp: 2026-01-25 00:10:13.019308
player_id: cpu_0
player_name: Maya
action: swap
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped 2 for 7 at pos 3
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}]

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


game_id: 76071c00-95e0-4279-8258-e6bec85d9b6d
timestamp: 2026-01-25 00:10:13.025077
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}]

visible_opponents_json:
{"Maya": [{"rank": "A", "suit": "clubs"}, {"rank": "2", "suit": "spades"}], "River": [{"rank": "8", "suit": "clubs"}, {"rank": "A", "suit": "spades"}], "Sofia": [{"rank": "Q", "suit": "diamonds"}, {"rank": "7", "suit": "spades"}]}


game_id: 76071c00-95e0-4279-8258-e6bec85d9b6d
timestamp: 2026-01-25 00:10:13.030847
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: swapped 6 for 8 at pos 2
hand_json:
[{"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}]

visible_opponents_json:
{"Maya": [{"rank": "A", "suit": "clubs"}, {"rank": "2", "suit": "spades"}], "River": [{"rank": "8", "suit": "clubs"}, {"rank": "A", "suit": "spades"}], "Sofia": [{"rank": "Q", "suit": "diamonds"}, {"rank": "7", "suit": "spades"}]}


game_id: 76071c00-95e0-4279-8258-e6bec85d9b6d
timestamp: 2026-01-25 00:10:13.036491
player_id: cpu_2
player_name: River
action: take_discard
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: took 8 from discard
hand_json:
[{"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}]

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


game_id: 76071c00-95e0-4279-8258-e6bec85d9b6d
timestamp: 2026-01-25 00:10:13.042142
player_id: cpu_2
player_name: River
action: swap
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: swapped 8 for J at pos 3
hand_json:
[{"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}]

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


game_id: 76071c00-95e0-4279-8258-e6bec85d9b6d
timestamp: 2026-01-25 00:10:13.048026
player_id: cpu_3
player_name: Sofia
action: draw_deck
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "Q", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}]

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


game_id: 76071c00-95e0-4279-8258-e6bec85d9b6d
timestamp: 2026-01-25 00:10:13.053863
player_id: cpu_3
player_name: Sofia
action: swap
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: swapped K for Q at pos 0
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}]

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


game_id: 76071c00-95e0-4279-8258-e6bec85d9b6d
timestamp: 2026-01-25 00:10:13.060063
player_id: cpu_0
player_name: Maya
action: draw_deck
card_rank: J
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}]

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


game_id: 76071c00-95e0-4279-8258-e6bec85d9b6d
timestamp: 2026-01-25 00:10:13.072029
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}]

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


game_id: 76071c00-95e0-4279-8258-e6bec85d9b6d
timestamp: 2026-01-25 00:10:13.078723
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped 4 for 6 at pos 2
hand_json:
[{"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}]

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


game_id: 76071c00-95e0-4279-8258-e6bec85d9b6d
timestamp: 2026-01-25 00:10:13.084560
player_id: cpu_2
player_name: River
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": "8", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}]

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


game_id: 76071c00-95e0-4279-8258-e6bec85d9b6d
timestamp: 2026-01-25 00:10:13.090199
player_id: cpu_2
player_name: River
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: swapped 6 for 8 at pos 0
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}]

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


game_id: 76071c00-95e0-4279-8258-e6bec85d9b6d
timestamp: 2026-01-25 00:10:13.095998
player_id: cpu_3
player_name: Sofia
action: draw_deck
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}]

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


game_id: 76071c00-95e0-4279-8258-e6bec85d9b6d
timestamp: 2026-01-25 00:10:13.107510
player_id: cpu_0
player_name: Maya
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: took 6 from discard
visible_opponents_json:
{"Sage": [{"rank": "4", "suit": "clubs"}, {"rank": "3", "suit": "hearts"}], "River": [{"rank": "6", "suit": "hearts"}, {"rank": "8", "suit": "hearts"}, {"rank": "A", "suit": "spades"}], "Sofia": [{"rank": "K", "suit": "hearts"}, {"rank": "7", "suit": "spades"}]}


game_id: 76071c00-95e0-4279-8258-e6bec85d9b6d
timestamp: 2026-01-25 00:10:13.113111
player_id: cpu_0
player_name: Maya
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "K", "suit": "spades"}
decision_reason: swapped 6 for K at pos 4
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}]

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


game_id: 76071c00-95e0-4279-8258-e6bec85d9b6d
timestamp: 2026-01-25 00:10:13.118928
player_id: cpu_1
player_name: Sage
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": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}]

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


game_id: 76071c00-95e0-4279-8258-e6bec85d9b6d
timestamp: 2026-01-25 00:10:13.124892
player_id: cpu_1
player_name: Sage
action: swap
card_rank: K
card_suit: spades
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: swapped K for 4 at pos 2
hand_json:
[{"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}]

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


game_id: 76071c00-95e0-4279-8258-e6bec85d9b6d
timestamp: 2026-01-25 00:10:13.130756
player_id: cpu_2
player_name: River
action: take_discard
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}]

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


game_id: 76071c00-95e0-4279-8258-e6bec85d9b6d
timestamp: 2026-01-25 00:10:13.136573
player_id: cpu_2
player_name: River
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: swapped 4 for 8 at pos 3
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}]

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


game_id: 76071c00-95e0-4279-8258-e6bec85d9b6d
timestamp: 2026-01-25 00:10:13.143260
player_id: cpu_3
player_name: Sofia
action: draw_deck
card_rank: J
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Maya": [{"rank": "A", "suit": "clubs"}, {"rank": "2", "suit": "spades"}, {"rank": "6", "suit": "clubs"}], "Sage": [{"rank": "K", "suit": "spades"}, {"rank": "3", "suit": "hearts"}], "River": [{"rank": "6", "suit": "hearts"}, {"rank": "4", "suit": "clubs"}, {"rank": "A", "suit": "spades"}]}


game_id: 76071c00-95e0-4279-8258-e6bec85d9b6d
timestamp: 2026-01-25 00:10:13.155957
player_id: cpu_0
player_name: Maya
action: draw_deck
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}]

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


game_id: 76071c00-95e0-4279-8258-e6bec85d9b6d
timestamp: 2026-01-25 00:10:13.162013
player_id: cpu_0
player_name: Maya
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 4 for 6 at pos 4
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}]

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


game_id: 76071c00-95e0-4279-8258-e6bec85d9b6d
timestamp: 2026-01-25 00:10:13.168104
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}]

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


game_id: 76071c00-95e0-4279-8258-e6bec85d9b6d
timestamp: 2026-01-25 00:10:13.174146
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: swapped 6 for 10 at pos 0
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}]

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


game_id: 76071c00-95e0-4279-8258-e6bec85d9b6d
timestamp: 2026-01-25 00:10:13.179964
player_id: cpu_2
player_name: River
action: draw_deck
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}]

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


game_id: 76071c00-95e0-4279-8258-e6bec85d9b6d
timestamp: 2026-01-25 00:10:13.185776
player_id: cpu_2
player_name: River
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "2", "suit": "clubs"}
decision_reason: swapped A for 2 at pos 1
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}]

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


game_id: 76071c00-95e0-4279-8258-e6bec85d9b6d
timestamp: 2026-01-25 00:10:13.191837
player_id: cpu_3
player_name: Sofia
action: take_discard
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: took 2 from discard
visible_opponents_json:
{"Maya": [{"rank": "A", "suit": "clubs"}, {"rank": "2", "suit": "spades"}, {"rank": "4", "suit": "hearts"}], "Sage": [{"rank": "6", "suit": "clubs"}, {"rank": "K", "suit": "spades"}, {"rank": "3", "suit": "hearts"}], "River": [{"rank": "6", "suit": "hearts"}, {"rank": "A", "suit": "hearts"}, {"rank": "4", "suit": "clubs"}, {"rank": "A", "suit": "spades"}]}


game_id: 76071c00-95e0-4279-8258-e6bec85d9b6d
timestamp: 2026-01-25 00:10:13.197897
player_id: cpu_3
player_name: Sofia
action: swap
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped 2 for 7 at pos 4
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}]

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


game_id: 76071c00-95e0-4279-8258-e6bec85d9b6d
timestamp: 2026-01-25 00:10:13.203832
player_id: cpu_0
player_name: Maya
action: take_discard
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}]

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


game_id: 76071c00-95e0-4279-8258-e6bec85d9b6d
timestamp: 2026-01-25 00:10:13.210104
player_id: cpu_0
player_name: Maya
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: swapped 7 for 8 at pos 5
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}]

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


game_id: 76071c00-95e0-4279-8258-e6bec85d9b6d
timestamp: 2026-01-25 00:10:13.215997
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}]

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


game_id: 76071c00-95e0-4279-8258-e6bec85d9b6d
timestamp: 2026-01-25 00:10:13.222144
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: swapped 3 for Q at pos 5
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: 76071c00-95e0-4279-8258-e6bec85d9b6d
timestamp: 2026-01-25 00:10:13.228572
player_id: cpu_2
player_name: River
action: draw_deck
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}]

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


game_id: 76071c00-95e0-4279-8258-e6bec85d9b6d
timestamp: 2026-01-25 00:10:13.234809
player_id: cpu_2
player_name: River
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped 5 for 6 at pos 0
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}]

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


game_id: 76071c00-95e0-4279-8258-e6bec85d9b6d
timestamp: 2026-01-25 00:10:13.240843
player_id: cpu_3
player_name: Sofia
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": "K", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}]

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


game_id: 76071c00-95e0-4279-8258-e6bec85d9b6d
timestamp: 2026-01-25 00:10:13.246798
player_id: cpu_3
player_name: Sofia
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: swapped 6 for 10 at pos 1
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}]

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


game_id: 76071c00-95e0-4279-8258-e6bec85d9b6d
timestamp: 2026-01-25 00:10:13.252797
player_id: cpu_0
player_name: Maya
action: draw_deck
card_rank: 9
card_suit: spades
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}]

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


game_id: 76071c00-95e0-4279-8258-e6bec85d9b6d
timestamp: 2026-01-25 00:10:13.264667
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: 76071c00-95e0-4279-8258-e6bec85d9b6d
timestamp: 2026-01-25 00:10:13.272433
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "2", "suit": "hearts"}
decision_reason: swapped 6 for 2 at pos 1
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: 76071c00-95e0-4279-8258-e6bec85d9b6d
timestamp: 2026-01-25 00:10:13.278319
player_id: cpu_2
player_name: River
action: take_discard
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: took 2 from discard
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}]

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


game_id: 76071c00-95e0-4279-8258-e6bec85d9b6d
timestamp: 2026-01-25 00:10:13.284292
player_id: cpu_2
player_name: River
action: swap
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped 2 for 5 at pos 0
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}]

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


game_id: 76071c00-95e0-4279-8258-e6bec85d9b6d
timestamp: 2026-01-25 00:10:13.290722
player_id: cpu_3
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": "K", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}]

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


game_id: 76071c00-95e0-4279-8258-e6bec85d9b6d
timestamp: 2026-01-25 00:10:13.296796
player_id: cpu_3
player_name: Sofia
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "3", "suit": "clubs"}
decision_reason: swapped 5 for 3 at pos 2
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}]

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


game_id: 76071c00-95e0-4279-8258-e6bec85d9b6d
timestamp: 2026-01-25 00:10:13.302677
player_id: cpu_0
player_name: Maya
action: take_discard
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: took 3 from discard
visible_opponents_json:
{"Sage": [{"rank": "6", "suit": "clubs"}, {"rank": "6", "suit": "diamonds"}, {"rank": "K", "suit": "spades"}, {"rank": "3", "suit": "hearts"}, {"rank": "3", "suit": "diamonds"}], "River": [{"rank": "2", "suit": "hearts"}, {"rank": "A", "suit": "hearts"}, {"rank": "4", "suit": "clubs"}, {"rank": "A", "suit": "spades"}], "Sofia": [{"rank": "K", "suit": "hearts"}, {"rank": "6", "suit": "hearts"}, {"rank": "5", "suit": "diamonds"}, {"rank": "2", "suit": "clubs"}]}


game_id: 76071c00-95e0-4279-8258-e6bec85d9b6d
timestamp: 2026-01-25 00:10:13.311563
player_id: cpu_0
player_name: Maya
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped 3 for 7 at pos 5
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: 76071c00-95e0-4279-8258-e6bec85d9b6d
timestamp: 2026-01-25 00:10:13.317550
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: 76071c00-95e0-4279-8258-e6bec85d9b6d
timestamp: 2026-01-25 00:10:13.323734
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped 7 for 5 at pos 4
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: 76071c00-95e0-4279-8258-e6bec85d9b6d
timestamp: 2026-01-25 00:10:13.330314
player_id: cpu_2
player_name: River
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": "2", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}]

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


game_id: 76071c00-95e0-4279-8258-e6bec85d9b6d
timestamp: 2026-01-25 00:10:13.336619
player_id: cpu_2
player_name: River
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "K", "suit": "clubs"}
decision_reason: swapped 5 for K at pos 5
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: 76071c00-95e0-4279-8258-e6bec85d9b6d
timestamp: 2026-01-25 00:10:13.343111
player_id: cpu_3
player_name: Sofia
action: take_discard
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: took K from discard
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}]

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


game_id: 76071c00-95e0-4279-8258-e6bec85d9b6d
timestamp: 2026-01-25 00:10:13.349645
player_id: cpu_3
player_name: Sofia
action: swap
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped K for 6 at pos 1
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}]

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


game_id: 76071c00-95e0-4279-8258-e6bec85d9b6d
timestamp: 2026-01-25 00:10:13.356014
player_id: cpu_0
player_name: Maya
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": "4", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: 76071c00-95e0-4279-8258-e6bec85d9b6d
timestamp: 2026-01-25 00:10:13.363428
player_id: cpu_0
player_name: Maya
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: swapped 6 for 4 at pos 0
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


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

visible_opponents_json:
{"Maya": [{"rank": "3", "suit": "diamonds"}, {"rank": "10", "suit": "spades"}], "Sage": [{"rank": "4", "suit": "hearts"}, {"rank": "J", "suit": "diamonds"}], "Priya": [{"rank": "9", "suit": "diamonds"}, {"rank": "Q", "suit": "hearts"}]}


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

visible_opponents_json:
{"Maya": [{"rank": "3", "suit": "diamonds"}, {"rank": "10", "suit": "spades"}], "Sage": [{"rank": "4", "suit": "hearts"}, {"rank": "J", "suit": "diamonds"}], "Priya": [{"rank": "9", "suit": "diamonds"}, {"rank": "Q", "suit": "hearts"}]}


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

visible_opponents_json:
{"River": [{"rank": "A", "suit": "spades"}, {"rank": "8", "suit": "diamonds"}], "Sage": [{"rank": "4", "suit": "hearts"}, {"rank": "J", "suit": "diamonds"}], "Priya": [{"rank": "9", "suit": "diamonds"}, {"rank": "Q", "suit": "hearts"}]}


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

visible_opponents_json:
{"River": [{"rank": "A", "suit": "spades"}, {"rank": "8", "suit": "diamonds"}], "Sage": [{"rank": "4", "suit": "hearts"}, {"rank": "J", "suit": "diamonds"}], "Priya": [{"rank": "9", "suit": "diamonds"}, {"rank": "Q", "suit": "hearts"}]}


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

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


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

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


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

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


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

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


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

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


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

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


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

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


