# moves

game_id: 3deda505-dadf-4236-a933-eb46d3eb6289
timestamp: 2026-01-25 00:10:04.384367
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped 5 for 6 at pos 0
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}]

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


game_id: 3deda505-dadf-4236-a933-eb46d3eb6289
timestamp: 2026-01-25 00:10:04.390390
player_id: cpu_0
player_name: Sofia
action: take_discard
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}]

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


game_id: 3deda505-dadf-4236-a933-eb46d3eb6289
timestamp: 2026-01-25 00:10:04.396403
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "K", "suit": "spades"}
decision_reason: swapped 6 for K at pos 4
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}]

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


game_id: 3deda505-dadf-4236-a933-eb46d3eb6289
timestamp: 2026-01-25 00:10:04.402924
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: K
card_suit: spades
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: took K from discard
hand_json:
[{"rank": "J", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 3deda505-dadf-4236-a933-eb46d3eb6289
timestamp: 2026-01-25 00:10:04.409534
player_id: cpu_1
player_name: Sage
action: swap
card_rank: K
card_suit: spades
discard_top_json: {"rank": "3", "suit": "hearts"}
decision_reason: swapped K for 3 at pos 2
hand_json:
[{"rank": "J", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 3deda505-dadf-4236-a933-eb46d3eb6289
timestamp: 2026-01-25 00:10:04.416081
player_id: cpu_2
player_name: Diego
action: take_discard
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 3deda505-dadf-4236-a933-eb46d3eb6289
timestamp: 2026-01-25 00:10:04.423507
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: swapped 3 for 4 at pos 1
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 3deda505-dadf-4236-a933-eb46d3eb6289
timestamp: 2026-01-25 00:10:04.429644
player_id: cpu_3
player_name: Priya
action: take_discard
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}]

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


game_id: 3deda505-dadf-4236-a933-eb46d3eb6289
timestamp: 2026-01-25 00:10:04.435609
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped 4 for 5 at pos 0
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}]

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


game_id: 3deda505-dadf-4236-a933-eb46d3eb6289
timestamp: 2026-01-25 00:10:04.441668
player_id: cpu_0
player_name: Sofia
action: take_discard
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}]

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


game_id: 3deda505-dadf-4236-a933-eb46d3eb6289
timestamp: 2026-01-25 00:10:04.447294
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 5 for 6 at pos 0
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}]

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


game_id: 3deda505-dadf-4236-a933-eb46d3eb6289
timestamp: 2026-01-25 00:10:04.453269
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": "J", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 3deda505-dadf-4236-a933-eb46d3eb6289
timestamp: 2026-01-25 00:10:04.459298
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "2", "suit": "hearts"}
decision_reason: swapped 6 for 2 at pos 3
hand_json:
[{"rank": "J", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 3deda505-dadf-4236-a933-eb46d3eb6289
timestamp: 2026-01-25 00:10:04.465176
player_id: cpu_2
player_name: Diego
action: take_discard
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: took 2 from discard
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 3deda505-dadf-4236-a933-eb46d3eb6289
timestamp: 2026-01-25 00:10:04.471390
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: swapped 2 for 4 at pos 4
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 3deda505-dadf-4236-a933-eb46d3eb6289
timestamp: 2026-01-25 00:10:04.477342
player_id: cpu_3
player_name: Priya
action: draw_deck
card_rank: 8
card_suit: spades
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}]

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


game_id: 3deda505-dadf-4236-a933-eb46d3eb6289
timestamp: 2026-01-25 00:10:04.484678
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 8
card_suit: spades
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: swapped 8 for 4 at pos 5
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": true}]

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


game_id: 06221482-476f-4ada-98db-a188ca35366b
timestamp: 2026-01-25 00:10:04.502934
player_id: cpu_0
player_name: Priya
action: take_discard
card_rank: 4
card_suit: diamonds
decision_reason: took 4 from discard
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": true}]

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


game_id: 06221482-476f-4ada-98db-a188ca35366b
timestamp: 2026-01-25 00:10:04.508858
player_id: cpu_0
player_name: Priya
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: swapped 4 for J at pos 5
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}]

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


game_id: 06221482-476f-4ada-98db-a188ca35366b
timestamp: 2026-01-25 00:10:04.515009
player_id: cpu_1
player_name: Sofia
action: draw_deck
card_rank: Q
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}]

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


game_id: 06221482-476f-4ada-98db-a188ca35366b
timestamp: 2026-01-25 00:10:04.530448
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}]

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


game_id: 06221482-476f-4ada-98db-a188ca35366b
timestamp: 2026-01-25 00:10:04.536981
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: swapped 8 for 10 at pos 3
hand_json:
[{"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}]

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


game_id: 06221482-476f-4ada-98db-a188ca35366b
timestamp: 2026-01-25 00:10:04.547015
player_id: cpu_3
player_name: Kenji
action: draw_deck
card_rank: J
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": false}]

visible_opponents_json:
{"Priya": [{"rank": "6", "suit": "clubs"}, {"rank": "4", "suit": "diamonds"}], "Sofia": [{"rank": "A", "suit": "clubs"}, {"rank": "8", "suit": "clubs"}], "Sage": [{"rank": "4", "suit": "clubs"}, {"rank": "8", "suit": "hearts"}]}


game_id: 06221482-476f-4ada-98db-a188ca35366b
timestamp: 2026-01-25 00:10:04.559913
player_id: cpu_0
player_name: Priya
action: draw_deck
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}]

visible_opponents_json:
{"Sofia": [{"rank": "A", "suit": "clubs"}, {"rank": "8", "suit": "clubs"}], "Sage": [{"rank": "4", "suit": "clubs"}, {"rank": "8", "suit": "hearts"}], "Kenji": [{"rank": "2", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}]}


game_id: 06221482-476f-4ada-98db-a188ca35366b
timestamp: 2026-01-25 00:10:04.566328
player_id: cpu_0
player_name: Priya
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 3 for 6 at pos 0
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}]

visible_opponents_json:
{"Sofia": [{"rank": "A", "suit": "clubs"}, {"rank": "8", "suit": "clubs"}], "Sage": [{"rank": "4", "suit": "clubs"}, {"rank": "8", "suit": "hearts"}], "Kenji": [{"rank": "2", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}]}


game_id: 06221482-476f-4ada-98db-a188ca35366b
timestamp: 2026-01-25 00:10:04.572249
player_id: cpu_1
player_name: Sofia
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}]

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


game_id: 06221482-476f-4ada-98db-a188ca35366b
timestamp: 2026-01-25 00:10:04.577767
player_id: cpu_1
player_name: Sofia
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: swapped 6 for 8 at pos 3
hand_json:
[{"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}]

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


game_id: 06221482-476f-4ada-98db-a188ca35366b
timestamp: 2026-01-25 00:10:04.583640
player_id: cpu_2
player_name: Sage
action: take_discard
card_rank: 8
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: took 8 from discard
hand_json:
[{"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}]

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


game_id: 06221482-476f-4ada-98db-a188ca35366b
timestamp: 2026-01-25 00:10:04.589704
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 8
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: swapped 8 for 10 at pos 0
hand_json:
[{"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}]

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


game_id: 06221482-476f-4ada-98db-a188ca35366b
timestamp: 2026-01-25 00:10:04.598855
player_id: cpu_3
player_name: Kenji
action: draw_deck
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": false}]

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


game_id: 06221482-476f-4ada-98db-a188ca35366b
timestamp: 2026-01-25 00:10:04.605051
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: swapped 2 for 4 at pos 3
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": false}]

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


game_id: 06221482-476f-4ada-98db-a188ca35366b
timestamp: 2026-01-25 00:10:04.611199
player_id: cpu_0
player_name: Priya
action: take_discard
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}]

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


game_id: 06221482-476f-4ada-98db-a188ca35366b
timestamp: 2026-01-25 00:10:04.617211
player_id: cpu_0
player_name: Priya
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped 4 for 6 at pos 2
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}]

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


game_id: 06221482-476f-4ada-98db-a188ca35366b
timestamp: 2026-01-25 00:10:04.623908
player_id: cpu_1
player_name: Sofia
action: take_discard
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}]

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


game_id: 06221482-476f-4ada-98db-a188ca35366b
timestamp: 2026-01-25 00:10:04.629959
player_id: cpu_1
player_name: Sofia
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: swapped 6 for 9 at pos 0
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}]

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


game_id: 06221482-476f-4ada-98db-a188ca35366b
timestamp: 2026-01-25 00:10:04.636531
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: Q
card_suit: spades
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}]

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


game_id: 06221482-476f-4ada-98db-a188ca35366b
timestamp: 2026-01-25 00:10:04.648542
player_id: cpu_3
player_name: Kenji
action: draw_deck
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": false}]

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


game_id: 06221482-476f-4ada-98db-a188ca35366b
timestamp: 2026-01-25 00:10:04.654647
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped 2 for 5 at pos 1
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": false}]

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


game_id: 06221482-476f-4ada-98db-a188ca35366b
timestamp: 2026-01-25 00:10:04.660726
player_id: cpu_0
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": "3", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}]

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


game_id: 06221482-476f-4ada-98db-a188ca35366b
timestamp: 2026-01-25 00:10:04.666926
player_id: cpu_0
player_name: Priya
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: swapped 5 for Q at pos 3
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}]

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


game_id: 06221482-476f-4ada-98db-a188ca35366b
timestamp: 2026-01-25 00:10:04.672897
player_id: cpu_1
player_name: Sofia
action: draw_deck
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}]

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


game_id: 06221482-476f-4ada-98db-a188ca35366b
timestamp: 2026-01-25 00:10:04.678851
player_id: cpu_1
player_name: Sofia
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped 3 for 6 at pos 0
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}]

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


game_id: 06221482-476f-4ada-98db-a188ca35366b
timestamp: 2026-01-25 00:10:04.685115
player_id: cpu_2
player_name: Sage
action: take_discard
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: took 6 from discard
visible_opponents_json:
{"Priya": [{"rank": "3", "suit": "spades"}, {"rank": "4", "suit": "hearts"}, {"rank": "5", "suit": "hearts"}, {"rank": "4", "suit": "diamonds"}], "Sofia": [{"rank": "3", "suit": "diamonds"}, {"rank": "A", "suit": "clubs"}, {"rank": "6", "suit": "clubs"}], "Kenji": [{"rank": "2", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}, {"rank": "2", "suit": "clubs"}]}


game_id: 06221482-476f-4ada-98db-a188ca35366b
timestamp: 2026-01-25 00:10:04.690974
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: swapped 6 for 8 at pos 0
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}]

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


game_id: 06221482-476f-4ada-98db-a188ca35366b
timestamp: 2026-01-25 00:10:04.697121
player_id: cpu_3
player_name: Kenji
action: draw_deck
card_rank: 10
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": false}]

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


game_id: 06221482-476f-4ada-98db-a188ca35366b
timestamp: 2026-01-25 00:10:04.703305
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 10
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped 10 for 5 at pos 5
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": true}]

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


game_id: 06221482-476f-4ada-98db-a188ca35366b
timestamp: 2026-01-25 00:10:04.709525
player_id: cpu_0
player_name: Priya
action: take_discard
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}]

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


game_id: 06221482-476f-4ada-98db-a188ca35366b
timestamp: 2026-01-25 00:10:04.715826
player_id: cpu_0
player_name: Priya
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "A", "suit": "spades"}
decision_reason: swapped 5 for A at pos 1
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}]

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


game_id: 06221482-476f-4ada-98db-a188ca35366b
timestamp: 2026-01-25 00:10:04.721945
player_id: cpu_1
player_name: Sofia
action: take_discard
card_rank: A
card_suit: spades
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: took A from discard
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}]

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


game_id: 06221482-476f-4ada-98db-a188ca35366b
timestamp: 2026-01-25 00:10:04.728061
player_id: cpu_1
player_name: Sofia
action: swap
card_rank: A
card_suit: spades
discard_top_json: {"rank": "A", "suit": "hearts"}
decision_reason: swapped A for A at pos 5
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}]

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


game_id: 06221482-476f-4ada-98db-a188ca35366b
timestamp: 2026-01-25 00:10:04.734083
player_id: cpu_2
player_name: Sage
action: take_discard
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: took A from discard
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}]

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


game_id: 06221482-476f-4ada-98db-a188ca35366b
timestamp: 2026-01-25 00:10:04.739764
player_id: cpu_2
player_name: Sage
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: swapped A for 8 at pos 3
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}]

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


game_id: 06221482-476f-4ada-98db-a188ca35366b
timestamp: 2026-01-25 00:10:04.745449
player_id: cpu_3
player_name: Kenji
action: take_discard
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: took 8 from discard
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": true}]

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


game_id: 06221482-476f-4ada-98db-a188ca35366b
timestamp: 2026-01-25 00:10:04.751451
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: swapped 8 for 10 at pos 5
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}]

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


game_id: 06221482-476f-4ada-98db-a188ca35366b
timestamp: 2026-01-25 00:10:04.758028
player_id: cpu_0
player_name: Priya
action: draw_deck
card_rank: 8
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}]

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


game_id: 06221482-476f-4ada-98db-a188ca35366b
timestamp: 2026-01-25 00:10:04.765158
player_id: cpu_0
player_name: Priya
action: swap
card_rank: 8
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped 8 for 7 at pos 4
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}]

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


game_id: 06221482-476f-4ada-98db-a188ca35366b
timestamp: 2026-01-25 00:10:04.774013
player_id: cpu_1
player_name: Sofia
action: take_discard
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}]

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


game_id: 06221482-476f-4ada-98db-a188ca35366b
timestamp: 2026-01-25 00:10:04.780176
player_id: cpu_1
player_name: Sofia
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: swapped 7 for 8 at pos 4
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}]

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


game_id: 06221482-476f-4ada-98db-a188ca35366b
timestamp: 2026-01-25 00:10:04.786426
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}]

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


game_id: 06221482-476f-4ada-98db-a188ca35366b
timestamp: 2026-01-25 00:10:04.792243
player_id: cpu_2
player_name: Sage
action: swap
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped K for 6 at pos 0
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}]

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


game_id: 06221482-476f-4ada-98db-a188ca35366b
timestamp: 2026-01-25 00:10:04.797976
player_id: cpu_3
player_name: Kenji
action: take_discard
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}]

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


game_id: 06221482-476f-4ada-98db-a188ca35366b
timestamp: 2026-01-25 00:10:04.803881
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: swapped 6 for 8 at pos 5
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}]

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


game_id: 51e3c91d-1bd8-431b-9e85-eafd4e8aa26b
timestamp: 2026-01-25 00:10:04.821671
player_id: cpu_0
player_name: Maya
action: take_discard
card_rank: A
card_suit: hearts
decision_reason: took A from discard
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": true}]

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


game_id: 51e3c91d-1bd8-431b-9e85-eafd4e8aa26b
timestamp: 2026-01-25 00:10:04.829928
player_id: cpu_0
player_name: Maya
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: swapped A for 9 at pos 5
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 51e3c91d-1bd8-431b-9e85-eafd4e8aa26b
timestamp: 2026-01-25 00:10:04.835859
player_id: cpu_1
player_name: Priya
action: draw_deck
card_rank: K
card_suit: spades
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": false}]

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


game_id: 51e3c91d-1bd8-431b-9e85-eafd4e8aa26b
timestamp: 2026-01-25 00:10:04.842272
player_id: cpu_1
player_name: Priya
action: swap
card_rank: K
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: swapped K for Q at pos 2
hand_json:
[{"rank": "6", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": false}]

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


game_id: 51e3c91d-1bd8-431b-9e85-eafd4e8aa26b
timestamp: 2026-01-25 00:10:04.848331
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: 51e3c91d-1bd8-431b-9e85-eafd4e8aa26b
timestamp: 2026-01-25 00:10:04.854202
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: swapped K for 9 at pos 1
hand_json:
[{"rank": "2", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: 51e3c91d-1bd8-431b-9e85-eafd4e8aa26b
timestamp: 2026-01-25 00:10:04.860435
player_id: cpu_3
player_name: Sage
action: draw_deck
card_rank: 10
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}]

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


game_id: 51e3c91d-1bd8-431b-9e85-eafd4e8aa26b
timestamp: 2026-01-25 00:10:04.872182
player_id: cpu_0
player_name: Maya
action: draw_deck
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 51e3c91d-1bd8-431b-9e85-eafd4e8aa26b
timestamp: 2026-01-25 00:10:04.878198
player_id: cpu_0
player_name: Maya
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "2", "suit": "diamonds"}
decision_reason: swapped 5 for 2 at pos 4
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 51e3c91d-1bd8-431b-9e85-eafd4e8aa26b
timestamp: 2026-01-25 00:10:04.884525
player_id: cpu_1
player_name: Priya
action: take_discard
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: took 2 from discard
hand_json:
[{"rank": "6", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": false}]

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


game_id: 51e3c91d-1bd8-431b-9e85-eafd4e8aa26b
timestamp: 2026-01-25 00:10:04.891280
player_id: cpu_1
player_name: Priya
action: swap
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped 2 for 7 at pos 5
hand_json:
[{"rank": "6", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: 51e3c91d-1bd8-431b-9e85-eafd4e8aa26b
timestamp: 2026-01-25 00:10:04.897392
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: 51e3c91d-1bd8-431b-9e85-eafd4e8aa26b
timestamp: 2026-01-25 00:10:04.903179
player_id: cpu_2
player_name: Kenji
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": "2", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: 51e3c91d-1bd8-431b-9e85-eafd4e8aa26b
timestamp: 2026-01-25 00:10:04.909892
player_id: cpu_3
player_name: Sage
action: draw_deck
card_rank: 10
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}]

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


game_id: 51e3c91d-1bd8-431b-9e85-eafd4e8aa26b
timestamp: 2026-01-25 00:10:04.922366
player_id: cpu_0
player_name: Maya
action: draw_deck
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 51e3c91d-1bd8-431b-9e85-eafd4e8aa26b
timestamp: 2026-01-25 00:10:04.928577
player_id: cpu_0
player_name: Maya
action: swap
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped K for 5 at pos 1
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 51e3c91d-1bd8-431b-9e85-eafd4e8aa26b
timestamp: 2026-01-25 00:10:04.934409
player_id: cpu_1
player_name: Priya
action: take_discard
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "6", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: 51e3c91d-1bd8-431b-9e85-eafd4e8aa26b
timestamp: 2026-01-25 00:10:04.940487
player_id: cpu_1
player_name: Priya
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: swapped 5 for 9 at pos 4
hand_json:
[{"rank": "6", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: 51e3c91d-1bd8-431b-9e85-eafd4e8aa26b
timestamp: 2026-01-25 00:10:04.946409
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: J
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: 51e3c91d-1bd8-431b-9e85-eafd4e8aa26b
timestamp: 2026-01-25 00:10:04.952254
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: J
card_suit: clubs
discard_top_json: {"rank": "3", "suit": "diamonds"}
decision_reason: swapped J for 3 at pos 3
hand_json:
[{"rank": "2", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: 51e3c91d-1bd8-431b-9e85-eafd4e8aa26b
timestamp: 2026-01-25 00:10:04.958053
player_id: cpu_3
player_name: Sage
action: take_discard
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: took 3 from discard
visible_opponents_json:
{"Maya": [{"rank": "K", "suit": "diamonds"}, {"rank": "5", "suit": "hearts"}, {"rank": "A", "suit": "hearts"}], "Priya": [{"rank": "K", "suit": "spades"}, {"rank": "K", "suit": "clubs"}, {"rank": "5", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}], "Kenji": [{"rank": "K", "suit": "hearts"}, {"rank": "7", "suit": "clubs"}, {"rank": "J", "suit": "clubs"}, {"rank": "4", "suit": "hearts"}]}


game_id: 51e3c91d-1bd8-431b-9e85-eafd4e8aa26b
timestamp: 2026-01-25 00:10:04.964093
player_id: cpu_3
player_name: Sage
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped 3 for 5 at pos 2
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}]

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


game_id: 51e3c91d-1bd8-431b-9e85-eafd4e8aa26b
timestamp: 2026-01-25 00:10:04.970397
player_id: cpu_0
player_name: Maya
action: take_discard
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 51e3c91d-1bd8-431b-9e85-eafd4e8aa26b
timestamp: 2026-01-25 00:10:04.976455
player_id: cpu_0
player_name: Maya
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 5 for 7 at pos 0
hand_json:
[{"rank": "5", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 51e3c91d-1bd8-431b-9e85-eafd4e8aa26b
timestamp: 2026-01-25 00:10:04.982353
player_id: cpu_1
player_name: Priya
action: take_discard
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "6", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: 51e3c91d-1bd8-431b-9e85-eafd4e8aa26b
timestamp: 2026-01-25 00:10:04.988602
player_id: cpu_1
player_name: Priya
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped 7 for 6 at pos 0
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: 51e3c91d-1bd8-431b-9e85-eafd4e8aa26b
timestamp: 2026-01-25 00:10:04.994485
player_id: cpu_2
player_name: Kenji
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": "2", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: 51e3c91d-1bd8-431b-9e85-eafd4e8aa26b
timestamp: 2026-01-25 00:10:05.000116
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: swapped 6 for J at pos 3
hand_json:
[{"rank": "2", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: 51e3c91d-1bd8-431b-9e85-eafd4e8aa26b
timestamp: 2026-01-25 00:10:05.005981
player_id: cpu_3
player_name: Sage
action: draw_deck
card_rank: 10
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}]

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


game_id: 51e3c91d-1bd8-431b-9e85-eafd4e8aa26b
timestamp: 2026-01-25 00:10:05.018352
player_id: cpu_0
player_name: Maya
action: draw_deck
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 51e3c91d-1bd8-431b-9e85-eafd4e8aa26b
timestamp: 2026-01-25 00:10:05.024462
player_id: cpu_0
player_name: Maya
action: swap
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: swapped 8 for 4 at pos 2
hand_json:
[{"rank": "5", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 51e3c91d-1bd8-431b-9e85-eafd4e8aa26b
timestamp: 2026-01-25 00:10:05.030451
player_id: cpu_1
player_name: Priya
action: take_discard
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: 51e3c91d-1bd8-431b-9e85-eafd4e8aa26b
timestamp: 2026-01-25 00:10:05.036136
player_id: cpu_1
player_name: Priya
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": "Q", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: 51e3c91d-1bd8-431b-9e85-eafd4e8aa26b
timestamp: 2026-01-25 00:10:05.041936
player_id: cpu_2
player_name: Kenji
action: take_discard
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "2", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: 51e3c91d-1bd8-431b-9e85-eafd4e8aa26b
timestamp: 2026-01-25 00:10:05.047902
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: swapped 7 for J at pos 4
hand_json:
[{"rank": "2", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: 51e3c91d-1bd8-431b-9e85-eafd4e8aa26b
timestamp: 2026-01-25 00:10:05.053897
player_id: cpu_3
player_name: Sage
action: draw_deck
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Maya": [{"rank": "5", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}, {"rank": "8", "suit": "hearts"}, {"rank": "5", "suit": "hearts"}, {"rank": "A", "suit": "hearts"}], "Priya": [{"rank": "4", "suit": "diamonds"}, {"rank": "K", "suit": "spades"}, {"rank": "K", "suit": "clubs"}, {"rank": "5", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}], "Kenji": [{"rank": "K", "suit": "hearts"}, {"rank": "7", "suit": "clubs"}, {"rank": "6", "suit": "spades"}, {"rank": "7", "suit": "diamonds"}, {"rank": "4", "suit": "hearts"}]}


game_id: 51e3c91d-1bd8-431b-9e85-eafd4e8aa26b
timestamp: 2026-01-25 00:10:05.060169
player_id: cpu_3
player_name: Sage
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: swapped 3 for 9 at pos 5
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: 51e3c91d-1bd8-431b-9e85-eafd4e8aa26b
timestamp: 2026-01-25 00:10:05.066236
player_id: cpu_0
player_name: Maya
action: draw_deck
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 51e3c91d-1bd8-431b-9e85-eafd4e8aa26b
timestamp: 2026-01-25 00:10:05.072259
player_id: cpu_0
player_name: Maya
action: swap
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: swapped 3 for 8 at pos 2
hand_json:
[{"rank": "5", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 51e3c91d-1bd8-431b-9e85-eafd4e8aa26b
timestamp: 2026-01-25 00:10:05.078503
player_id: cpu_1
player_name: Priya
action: draw_deck
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: 51e3c91d-1bd8-431b-9e85-eafd4e8aa26b
timestamp: 2026-01-25 00:10:05.084817
player_id: cpu_1
player_name: Priya
action: swap
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped 2 for 5 at pos 4
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: 51e3c91d-1bd8-431b-9e85-eafd4e8aa26b
timestamp: 2026-01-25 00:10:05.090939
player_id: cpu_2
player_name: Kenji
action: take_discard
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "2", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: 51e3c91d-1bd8-431b-9e85-eafd4e8aa26b
timestamp: 2026-01-25 00:10:05.097239
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped 5 for 7 at pos 2
hand_json:
[{"rank": "2", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: 51e3c91d-1bd8-431b-9e85-eafd4e8aa26b
timestamp: 2026-01-25 00:10:05.103344
player_id: cpu_3
player_name: Sage
action: take_discard
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: 51e3c91d-1bd8-431b-9e85-eafd4e8aa26b
timestamp: 2026-01-25 00:10:05.109791
player_id: cpu_3
player_name: Sage
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: swapped 7 for 4 at pos 0
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: 51e3c91d-1bd8-431b-9e85-eafd4e8aa26b
timestamp: 2026-01-25 00:10:05.115682
player_id: cpu_0
player_name: Maya
action: take_discard
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "5", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 51e3c91d-1bd8-431b-9e85-eafd4e8aa26b
timestamp: 2026-01-25 00:10:05.121314
player_id: cpu_0
player_name: Maya
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped 4 for 5 at pos 0
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 51e3c91d-1bd8-431b-9e85-eafd4e8aa26b
timestamp: 2026-01-25 00:10:05.127470
player_id: cpu_1
player_name: Priya
action: take_discard
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: 51e3c91d-1bd8-431b-9e85-eafd4e8aa26b
timestamp: 2026-01-25 00:10:05.134167
player_id: cpu_1
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": "4", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: 51e3c91d-1bd8-431b-9e85-eafd4e8aa26b
timestamp: 2026-01-25 00:10:05.140541
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: Q
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: 51e3c91d-1bd8-431b-9e85-eafd4e8aa26b
timestamp: 2026-01-25 00:10:05.146539
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: Q
card_suit: spades
discard_top_json: {"rank": "2", "suit": "spades"}
decision_reason: swapped Q for 2 at pos 0
hand_json:
[{"rank": "Q", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: 51e3c91d-1bd8-431b-9e85-eafd4e8aa26b
timestamp: 2026-01-25 00:10:05.152639
player_id: cpu_3
player_name: Sage
action: take_discard
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: took 2 from discard
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: 51e3c91d-1bd8-431b-9e85-eafd4e8aa26b
timestamp: 2026-01-25 00:10:05.158758
player_id: cpu_3
player_name: Sage
action: swap
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped 2 for 7 at pos 0
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: 51e3c91d-1bd8-431b-9e85-eafd4e8aa26b
timestamp: 2026-01-25 00:10:05.165363
player_id: cpu_0
player_name: Maya
action: take_discard
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 51e3c91d-1bd8-431b-9e85-eafd4e8aa26b
timestamp: 2026-01-25 00:10:05.171948
player_id: cpu_0
player_name: Maya
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: swapped 7 for Q at pos 3
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 8bda3f96-498c-4322-a8a2-2d8d7beabad1
timestamp: 2026-01-25 00:10:05.189652
player_id: cpu_0
player_name: Kenji
action: draw_deck
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}]

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


game_id: 8bda3f96-498c-4322-a8a2-2d8d7beabad1
timestamp: 2026-01-25 00:10:05.195915
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: swapped K for J at pos 2
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}]

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


game_id: 8bda3f96-498c-4322-a8a2-2d8d7beabad1
timestamp: 2026-01-25 00:10:05.202152
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: 8bda3f96-498c-4322-a8a2-2d8d7beabad1
timestamp: 2026-01-25 00:10:05.208258
player_id: cpu_1
player_name: Maya
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: swapped A for J at pos 3
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: 8bda3f96-498c-4322-a8a2-2d8d7beabad1
timestamp: 2026-01-25 00:10:05.214318
player_id: cpu_2
player_name: River
action: draw_deck
card_rank: 9
card_suit: spades
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}]

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


game_id: 8bda3f96-498c-4322-a8a2-2d8d7beabad1
timestamp: 2026-01-25 00:10:05.229223
player_id: cpu_3
player_name: Sage
action: draw_deck
card_rank: 8
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: 8bda3f96-498c-4322-a8a2-2d8d7beabad1
timestamp: 2026-01-25 00:10:05.241858
player_id: cpu_0
player_name: Kenji
action: draw_deck
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}]

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


game_id: 8bda3f96-498c-4322-a8a2-2d8d7beabad1
timestamp: 2026-01-25 00:10:05.248297
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 6 for 7 at pos 3
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}]

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


game_id: 8bda3f96-498c-4322-a8a2-2d8d7beabad1
timestamp: 2026-01-25 00:10:05.254690
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: 10
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: 8bda3f96-498c-4322-a8a2-2d8d7beabad1
timestamp: 2026-01-25 00:10:05.266925
player_id: cpu_2
player_name: River
action: draw_deck
card_rank: Q
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}]

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


game_id: 8bda3f96-498c-4322-a8a2-2d8d7beabad1
timestamp: 2026-01-25 00:10:05.278346
player_id: cpu_3
player_name: Sage
action: draw_deck
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: 8bda3f96-498c-4322-a8a2-2d8d7beabad1
timestamp: 2026-01-25 00:10:05.297132
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 4 for 6 at pos 3
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}]


game_id: 8bda3f96-498c-4322-a8a2-2d8d7beabad1
timestamp: 2026-01-25 00:10:05.303517
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Kenji": [{"rank": "K", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}], "River": [{"rank": "5", "suit": "clubs"}, {"rank": "7", "suit": "spades"}], "Sage": [{"rank": "K", "suit": "spades"}, {"rank": "4", "suit": "hearts"}]}


game_id: 8bda3f96-498c-4322-a8a2-2d8d7beabad1
timestamp: 2026-01-25 00:10:05.309976
player_id: cpu_1
player_name: Maya
action: swap
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "A", "suit": "clubs"}
decision_reason: swapped K for A at pos 0
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: 8bda3f96-498c-4322-a8a2-2d8d7beabad1
timestamp: 2026-01-25 00:10:05.316596
player_id: cpu_2
player_name: River
action: take_discard
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: took A from discard
visible_opponents_json:
{"Kenji": [{"rank": "K", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}], "Maya": [{"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "A", "suit": "diamonds"}], "Sage": [{"rank": "K", "suit": "spades"}, {"rank": "4", "suit": "hearts"}]}


game_id: 8bda3f96-498c-4322-a8a2-2d8d7beabad1
timestamp: 2026-01-25 00:10:05.322801
player_id: cpu_2
player_name: River
action: swap
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped A for 7 at pos 4
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}]

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


game_id: 8bda3f96-498c-4322-a8a2-2d8d7beabad1
timestamp: 2026-01-25 00:10:05.328891
player_id: cpu_3
player_name: Sage
action: draw_deck
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Kenji": [{"rank": "K", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}], "Maya": [{"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "A", "suit": "diamonds"}], "River": [{"rank": "5", "suit": "clubs"}, {"rank": "A", "suit": "clubs"}]}


game_id: 8bda3f96-498c-4322-a8a2-2d8d7beabad1
timestamp: 2026-01-25 00:10:05.335070
player_id: cpu_3
player_name: Sage
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: swapped 5 for 10 at pos 4
hand_json:
[{"rank": "4", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: 8bda3f96-498c-4322-a8a2-2d8d7beabad1
timestamp: 2026-01-25 00:10:05.340947
player_id: cpu_0
player_name: Kenji
action: draw_deck
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}]

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


game_id: 8bda3f96-498c-4322-a8a2-2d8d7beabad1
timestamp: 2026-01-25 00:10:05.346900
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: swapped 3 for 4 at pos 3
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}]

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


game_id: 8bda3f96-498c-4322-a8a2-2d8d7beabad1
timestamp: 2026-01-25 00:10:05.352975
player_id: cpu_1
player_name: Maya
action: take_discard
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: 8bda3f96-498c-4322-a8a2-2d8d7beabad1
timestamp: 2026-01-25 00:10:05.359113
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: swapped 4 for Q at pos 4
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: 8bda3f96-498c-4322-a8a2-2d8d7beabad1
timestamp: 2026-01-25 00:10:05.365298
player_id: cpu_2
player_name: River
action: draw_deck
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}]

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


game_id: 8bda3f96-498c-4322-a8a2-2d8d7beabad1
timestamp: 2026-01-25 00:10:05.371499
player_id: cpu_2
player_name: River
action: swap
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped 2 for 5 at pos 0
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}]

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


game_id: 8bda3f96-498c-4322-a8a2-2d8d7beabad1
timestamp: 2026-01-25 00:10:05.378660
player_id: cpu_3
player_name: Sage
action: take_discard
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "4", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: 8bda3f96-498c-4322-a8a2-2d8d7beabad1
timestamp: 2026-01-25 00:10:05.384507
player_id: cpu_3
player_name: Sage
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped 5 for 5 at pos 2
hand_json:
[{"rank": "4", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: 8bda3f96-498c-4322-a8a2-2d8d7beabad1
timestamp: 2026-01-25 00:10:05.390968
player_id: cpu_0
player_name: Kenji
action: take_discard
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}]

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


game_id: 8bda3f96-498c-4322-a8a2-2d8d7beabad1
timestamp: 2026-01-25 00:10:05.396891
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: swapped 5 for J at pos 5
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: 8bda3f96-498c-4322-a8a2-2d8d7beabad1
timestamp: 2026-01-25 00:10:05.403098
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: 8bda3f96-498c-4322-a8a2-2d8d7beabad1
timestamp: 2026-01-25 00:10:05.408963
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: swapped 3 for 4 at pos 4
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: 8bda3f96-498c-4322-a8a2-2d8d7beabad1
timestamp: 2026-01-25 00:10:05.414860
player_id: cpu_2
player_name: River
action: take_discard
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}]

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


game_id: 8bda3f96-498c-4322-a8a2-2d8d7beabad1
timestamp: 2026-01-25 00:10:05.420547
player_id: cpu_2
player_name: River
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "2", "suit": "hearts"}
decision_reason: swapped 4 for 2 at pos 5
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}]

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


game_id: 8bda3f96-498c-4322-a8a2-2d8d7beabad1
timestamp: 2026-01-25 00:10:05.426230
player_id: cpu_3
player_name: Sage
action: take_discard
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: took 2 from discard
hand_json:
[{"rank": "4", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: 8bda3f96-498c-4322-a8a2-2d8d7beabad1
timestamp: 2026-01-25 00:10:05.432166
player_id: cpu_3
player_name: Sage
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": "4", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: 8bda3f96-498c-4322-a8a2-2d8d7beabad1
timestamp: 2026-01-25 00:10:05.438242
player_id: cpu_0
player_name: Kenji
action: take_discard
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: 8bda3f96-498c-4322-a8a2-2d8d7beabad1
timestamp: 2026-01-25 00:10:05.444417
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "3", "suit": "diamonds"}
decision_reason: swapped 5 for 3 at pos 0
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: 8bda3f96-498c-4322-a8a2-2d8d7beabad1
timestamp: 2026-01-25 00:10:05.450399
player_id: cpu_1
player_name: Maya
action: take_discard
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: 8bda3f96-498c-4322-a8a2-2d8d7beabad1
timestamp: 2026-01-25 00:10:05.456558
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "2", "suit": "spades"}
decision_reason: swapped 3 for 2 at pos 1
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: 8bda3f96-498c-4322-a8a2-2d8d7beabad1
timestamp: 2026-01-25 00:10:05.462806
player_id: cpu_2
player_name: River
action: take_discard
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: took 2 from discard
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}]

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


game_id: 8bda3f96-498c-4322-a8a2-2d8d7beabad1
timestamp: 2026-01-25 00:10:05.469159
player_id: cpu_2
player_name: River
action: swap
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: swapped 2 for 4 at pos 5
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}]

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


game_id: 8bda3f96-498c-4322-a8a2-2d8d7beabad1
timestamp: 2026-01-25 00:10:05.475352
player_id: cpu_3
player_name: Sage
action: take_discard
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "4", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: 8bda3f96-498c-4322-a8a2-2d8d7beabad1
timestamp: 2026-01-25 00:10:05.481684
player_id: cpu_3
player_name: Sage
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped 4 for 5 at pos 4
hand_json:
[{"rank": "4", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: 8bda3f96-498c-4322-a8a2-2d8d7beabad1
timestamp: 2026-01-25 00:10:05.487746
player_id: cpu_0
player_name: Kenji
action: take_discard
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: 8bda3f96-498c-4322-a8a2-2d8d7beabad1
timestamp: 2026-01-25 00:10:05.493679
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: swapped 5 for 8 at pos 4
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: 8bda3f96-498c-4322-a8a2-2d8d7beabad1
timestamp: 2026-01-25 00:10:05.500076
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: 8bda3f96-498c-4322-a8a2-2d8d7beabad1
timestamp: 2026-01-25 00:10:05.506272
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped 6 for 7 at pos 2
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: 8bda3f96-498c-4322-a8a2-2d8d7beabad1
timestamp: 2026-01-25 00:10:05.512556
player_id: cpu_2
player_name: River
action: take_discard
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}]

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


game_id: 8bda3f96-498c-4322-a8a2-2d8d7beabad1
timestamp: 2026-01-25 00:10:05.519035
player_id: cpu_2
player_name: River
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: swapped 7 for Q at pos 1
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}]

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


game_id: 8bda3f96-498c-4322-a8a2-2d8d7beabad1
timestamp: 2026-01-25 00:10:05.525490
player_id: cpu_3
player_name: Sage
action: draw_deck
card_rank: Q
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: 8bda3f96-498c-4322-a8a2-2d8d7beabad1
timestamp: 2026-01-25 00:10:05.538442
player_id: cpu_0
player_name: Kenji
action: draw_deck
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: 8bda3f96-498c-4322-a8a2-2d8d7beabad1
timestamp: 2026-01-25 00:10:05.544618
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped 3 for 5 at pos 0
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: 7d3d594d-d7c9-4c19-9475-ef9a0c490bb6
timestamp: 2026-01-25 00:10:05.562224
player_id: cpu_0
player_name: Maya
action: draw_deck
card_rank: 10
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "9", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}]

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


game_id: 7d3d594d-d7c9-4c19-9475-ef9a0c490bb6
timestamp: 2026-01-25 00:10:05.578063
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}]

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


game_id: 7d3d594d-d7c9-4c19-9475-ef9a0c490bb6
timestamp: 2026-01-25 00:10:05.584019
player_id: cpu_1
player_name: Sage
action: swap
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: swapped K for 9 at pos 1
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}]

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


game_id: 7d3d594d-d7c9-4c19-9475-ef9a0c490bb6
timestamp: 2026-01-25 00:10:05.589684
player_id: cpu_2
player_name: River
action: draw_deck
card_rank: Q
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}]

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


game_id: 7d3d594d-d7c9-4c19-9475-ef9a0c490bb6
timestamp: 2026-01-25 00:10:05.602063
player_id: cpu_3
player_name: Priya
action: draw_deck
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}]

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


game_id: 7d3d594d-d7c9-4c19-9475-ef9a0c490bb6
timestamp: 2026-01-25 00:10:05.608462
player_id: cpu_3
player_name: Priya
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: swapped A for 9 at pos 4
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}]

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


game_id: 7d3d594d-d7c9-4c19-9475-ef9a0c490bb6
timestamp: 2026-01-25 00:10:05.614516
player_id: cpu_0
player_name: Maya
action: take_discard
card_rank: 9
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: took 9 from discard
hand_json:
[{"rank": "9", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}]

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


game_id: 7d3d594d-d7c9-4c19-9475-ef9a0c490bb6
timestamp: 2026-01-25 00:10:05.620533
player_id: cpu_0
player_name: Maya
action: swap
card_rank: 9
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped 9 for 6 at pos 3
hand_json:
[{"rank": "9", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}]

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


game_id: 7d3d594d-d7c9-4c19-9475-ef9a0c490bb6
timestamp: 2026-01-25 00:10:05.626491
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}]

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


game_id: 7d3d594d-d7c9-4c19-9475-ef9a0c490bb6
timestamp: 2026-01-25 00:10:05.634640
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "A", "suit": "diamonds"}
decision_reason: swapped 6 for A at pos 2
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}]

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


game_id: 7d3d594d-d7c9-4c19-9475-ef9a0c490bb6
timestamp: 2026-01-25 00:10:05.641050
player_id: cpu_2
player_name: River
action: take_discard
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: took A from discard
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}]

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


game_id: 7d3d594d-d7c9-4c19-9475-ef9a0c490bb6
timestamp: 2026-01-25 00:10:05.647432
player_id: cpu_2
player_name: River
action: swap
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped A for 6 at pos 1
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}]

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


game_id: 7d3d594d-d7c9-4c19-9475-ef9a0c490bb6
timestamp: 2026-01-25 00:10:05.662163
player_id: cpu_3
player_name: Priya
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": false}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}]

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


game_id: 7d3d594d-d7c9-4c19-9475-ef9a0c490bb6
timestamp: 2026-01-25 00:10:05.671956
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: swapped 6 for 4 at pos 5
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}]

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


game_id: 7d3d594d-d7c9-4c19-9475-ef9a0c490bb6
timestamp: 2026-01-25 00:10:05.680783
player_id: cpu_0
player_name: Maya
action: take_discard
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "9", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}]

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


game_id: 7d3d594d-d7c9-4c19-9475-ef9a0c490bb6
timestamp: 2026-01-25 00:10:05.689438
player_id: cpu_0
player_name: Maya
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: swapped 4 for 9 at pos 0
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}]

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


game_id: 7d3d594d-d7c9-4c19-9475-ef9a0c490bb6
timestamp: 2026-01-25 00:10:05.696795
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: J
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}]

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


game_id: 7d3d594d-d7c9-4c19-9475-ef9a0c490bb6
timestamp: 2026-01-25 00:10:05.711693
player_id: cpu_2
player_name: River
action: draw_deck
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}]

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


game_id: 7d3d594d-d7c9-4c19-9475-ef9a0c490bb6
timestamp: 2026-01-25 00:10:05.717764
player_id: cpu_2
player_name: River
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped 3 for 7 at pos 4
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": false}]

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


game_id: 7d3d594d-d7c9-4c19-9475-ef9a0c490bb6
timestamp: 2026-01-25 00:10:05.724719
player_id: cpu_3
player_name: Priya
action: draw_deck
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}]

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


game_id: 7d3d594d-d7c9-4c19-9475-ef9a0c490bb6
timestamp: 2026-01-25 00:10:05.731035
player_id: cpu_3
player_name: Priya
action: swap
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped K for 6 at pos 5
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: 7d3d594d-d7c9-4c19-9475-ef9a0c490bb6
timestamp: 2026-01-25 00:10:05.737499
player_id: cpu_0
player_name: Maya
action: take_discard
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}]

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


game_id: 7d3d594d-d7c9-4c19-9475-ef9a0c490bb6
timestamp: 2026-01-25 00:10:05.743950
player_id: cpu_0
player_name: Maya
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: swapped 6 for 9 at pos 3
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}]

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


game_id: 7d3d594d-d7c9-4c19-9475-ef9a0c490bb6
timestamp: 2026-01-25 00:10:05.749862
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Maya": [{"rank": "4", "suit": "hearts"}, {"rank": "6", "suit": "diamonds"}, {"rank": "7", "suit": "diamonds"}], "River": [{"rank": "A", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}, {"rank": "3", "suit": "spades"}], "Priya": [{"rank": "5", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "K", "suit": "diamonds"}]}


game_id: 7d3d594d-d7c9-4c19-9475-ef9a0c490bb6
timestamp: 2026-01-25 00:10:05.756139
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 3 for 6 at pos 0
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}]

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


game_id: 7d3d594d-d7c9-4c19-9475-ef9a0c490bb6
timestamp: 2026-01-25 00:10:05.762736
player_id: cpu_2
player_name: River
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": false}]

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


game_id: 7d3d594d-d7c9-4c19-9475-ef9a0c490bb6
timestamp: 2026-01-25 00:10:05.768796
player_id: cpu_2
player_name: River
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "3", "suit": "diamonds"}
decision_reason: swapped 6 for 3 at pos 0
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": false}]

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


game_id: 7d3d594d-d7c9-4c19-9475-ef9a0c490bb6
timestamp: 2026-01-25 00:10:05.774728
player_id: cpu_3
player_name: Priya
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": "clubs", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: 7d3d594d-d7c9-4c19-9475-ef9a0c490bb6
timestamp: 2026-01-25 00:10:05.780793
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped 3 for 5 at pos 2
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: 7d3d594d-d7c9-4c19-9475-ef9a0c490bb6
timestamp: 2026-01-25 00:10:05.787256
player_id: cpu_0
player_name: Maya
action: take_discard
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}]

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


game_id: 7d3d594d-d7c9-4c19-9475-ef9a0c490bb6
timestamp: 2026-01-25 00:10:05.794450
player_id: cpu_0
player_name: Maya
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 5 for 7 at pos 5
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: 7d3d594d-d7c9-4c19-9475-ef9a0c490bb6
timestamp: 2026-01-25 00:10:05.800591
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}]

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


game_id: 7d3d594d-d7c9-4c19-9475-ef9a0c490bb6
timestamp: 2026-01-25 00:10:05.806663
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "4", "suit": "spades"}
decision_reason: swapped 7 for 4 at pos 4
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}]

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


game_id: 7d3d594d-d7c9-4c19-9475-ef9a0c490bb6
timestamp: 2026-01-25 00:10:05.812912
player_id: cpu_2
player_name: River
action: take_discard
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": false}]

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


game_id: 7d3d594d-d7c9-4c19-9475-ef9a0c490bb6
timestamp: 2026-01-25 00:10:05.818964
player_id: cpu_2
player_name: River
action: swap
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 4 for 6 at pos 0
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": false}]

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


game_id: 7d3d594d-d7c9-4c19-9475-ef9a0c490bb6
timestamp: 2026-01-25 00:10:05.825312
player_id: cpu_3
player_name: Priya
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: 7d3d594d-d7c9-4c19-9475-ef9a0c490bb6
timestamp: 2026-01-25 00:10:05.831591
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped 6 for 5 at pos 3
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: 7d3d594d-d7c9-4c19-9475-ef9a0c490bb6
timestamp: 2026-01-25 00:10:05.837733
player_id: cpu_0
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": "4", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: 7d3d594d-d7c9-4c19-9475-ef9a0c490bb6
timestamp: 2026-01-25 00:10:05.843609
player_id: cpu_0
player_name: Maya
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "A", "suit": "spades"}
decision_reason: swapped 5 for A at pos 2
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: 7d3d594d-d7c9-4c19-9475-ef9a0c490bb6
timestamp: 2026-01-25 00:10:05.849891
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: A
card_suit: spades
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took A from discard
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}]

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


game_id: 7d3d594d-d7c9-4c19-9475-ef9a0c490bb6
timestamp: 2026-01-25 00:10:05.855828
player_id: cpu_1
player_name: Sage
action: swap
card_rank: A
card_suit: spades
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped A for 7 at pos 4
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}]

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


game_id: 7d3d594d-d7c9-4c19-9475-ef9a0c490bb6
timestamp: 2026-01-25 00:10:05.862214
player_id: cpu_2
player_name: River
action: take_discard
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": false}]

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


game_id: 7d3d594d-d7c9-4c19-9475-ef9a0c490bb6
timestamp: 2026-01-25 00:10:05.868162
player_id: cpu_2
player_name: River
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped 7 for 7 at pos 2
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": false}]

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


game_id: 7d3d594d-d7c9-4c19-9475-ef9a0c490bb6
timestamp: 2026-01-25 00:10:05.873852
player_id: cpu_3
player_name: Priya
action: take_discard
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: 7d3d594d-d7c9-4c19-9475-ef9a0c490bb6
timestamp: 2026-01-25 00:10:05.879697
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: swapped 7 for 4 at pos 0
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: 7d3d594d-d7c9-4c19-9475-ef9a0c490bb6
timestamp: 2026-01-25 00:10:05.886195
player_id: cpu_0
player_name: Maya
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": "4", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: 7d3d594d-d7c9-4c19-9475-ef9a0c490bb6
timestamp: 2026-01-25 00:10:05.892116
player_id: cpu_0
player_name: Maya
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped 4 for 6 at pos 3
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: 7d3d594d-d7c9-4c19-9475-ef9a0c490bb6
timestamp: 2026-01-25 00:10:05.897735
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}]

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


game_id: 7d3d594d-d7c9-4c19-9475-ef9a0c490bb6
timestamp: 2026-01-25 00:10:05.903804
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "K", "suit": "hearts"}
decision_reason: swapped 6 for K at pos 5
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}]

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


game_id: 7d3d594d-d7c9-4c19-9475-ef9a0c490bb6
timestamp: 2026-01-25 00:10:05.909801
player_id: cpu_2
player_name: River
action: take_discard
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took K from discard
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": false}]

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


game_id: 7d3d594d-d7c9-4c19-9475-ef9a0c490bb6
timestamp: 2026-01-25 00:10:05.915915
player_id: cpu_2
player_name: River
action: swap
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped K for 7 at pos 2
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": false}]

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


game_id: 7d3d594d-d7c9-4c19-9475-ef9a0c490bb6
timestamp: 2026-01-25 00:10:05.922748
player_id: cpu_3
player_name: Priya
action: take_discard
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: 7d3d594d-d7c9-4c19-9475-ef9a0c490bb6
timestamp: 2026-01-25 00:10:05.928846
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: swapped 7 for J at pos 1
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: 7d3d594d-d7c9-4c19-9475-ef9a0c490bb6
timestamp: 2026-01-25 00:10:05.935146
player_id: cpu_0
player_name: Maya
action: draw_deck
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: 7d3d594d-d7c9-4c19-9475-ef9a0c490bb6
timestamp: 2026-01-25 00:10:05.941211
player_id: cpu_0
player_name: Maya
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: swapped 5 for Q at pos 4
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: 1ff8d758-8e86-4cd8-b1c2-29045b41a290
timestamp: 2026-01-25 00:10:05.958393
player_id: cpu_0
player_name: Marcus
action: take_discard
card_rank: 2
card_suit: hearts
decision_reason: took 2 from discard
hand_json:
[{"rank": "4", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Sofia": [{"rank": "3", "suit": "diamonds"}, {"rank": "4", "suit": "hearts"}], "Diego": [{"rank": "10", "suit": "diamonds"}, {"rank": "J", "suit": "hearts"}], "Priya": [{"rank": "K", "suit": "diamonds"}, {"rank": "J", "suit": "spades"}]}


game_id: 1ff8d758-8e86-4cd8-b1c2-29045b41a290
timestamp: 2026-01-25 00:10:05.964379
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped 2 for 5 at pos 3
hand_json:
[{"rank": "4", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Sofia": [{"rank": "3", "suit": "diamonds"}, {"rank": "4", "suit": "hearts"}], "Diego": [{"rank": "10", "suit": "diamonds"}, {"rank": "J", "suit": "hearts"}], "Priya": [{"rank": "K", "suit": "diamonds"}, {"rank": "J", "suit": "spades"}]}


game_id: 1ff8d758-8e86-4cd8-b1c2-29045b41a290
timestamp: 2026-01-25 00:10:05.970343
player_id: cpu_1
player_name: Sofia
action: draw_deck
card_rank: K
card_suit: spades
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: 1ff8d758-8e86-4cd8-b1c2-29045b41a290
timestamp: 2026-01-25 00:10:05.976588
player_id: cpu_1
player_name: Sofia
action: swap
card_rank: K
card_suit: spades
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: swapped K for 4 at pos 5
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: 1ff8d758-8e86-4cd8-b1c2-29045b41a290
timestamp: 2026-01-25 00:10:05.983414
player_id: cpu_2
player_name: Diego
action: take_discard
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}]

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


game_id: 1ff8d758-8e86-4cd8-b1c2-29045b41a290
timestamp: 2026-01-25 00:10:05.989740
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: swapped 4 for 10 at pos 2
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}]

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


game_id: 1ff8d758-8e86-4cd8-b1c2-29045b41a290
timestamp: 2026-01-25 00:10:05.995818
player_id: cpu_3
player_name: Priya
action: draw_deck
card_rank: Q
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": true}]

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


game_id: 1ff8d758-8e86-4cd8-b1c2-29045b41a290
timestamp: 2026-01-25 00:10:06.007443
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: 10
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}]

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


game_id: 1ff8d758-8e86-4cd8-b1c2-29045b41a290
timestamp: 2026-01-25 00:10:06.020127
player_id: cpu_1
player_name: Sofia
action: draw_deck
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: 1ff8d758-8e86-4cd8-b1c2-29045b41a290
timestamp: 2026-01-25 00:10:06.038196
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: swapped 8 for J at pos 3
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}]


game_id: 1ff8d758-8e86-4cd8-b1c2-29045b41a290
timestamp: 2026-01-25 00:10:06.044361
player_id: cpu_3
player_name: Priya
action: take_discard
card_rank: J
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: took J from discard
hand_json:
[{"rank": "7", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": true}]

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


game_id: 1ff8d758-8e86-4cd8-b1c2-29045b41a290
timestamp: 2026-01-25 00:10:06.050171
player_id: cpu_3
player_name: Priya
action: swap
card_rank: J
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: swapped J for 8 at pos 2
hand_json:
[{"rank": "7", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": true}]

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


game_id: 1ff8d758-8e86-4cd8-b1c2-29045b41a290
timestamp: 2026-01-25 00:10:06.058166
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Sofia": [{"rank": "3", "suit": "diamonds"}, {"rank": "K", "suit": "spades"}], "Diego": [{"rank": "4", "suit": "hearts"}, {"rank": "8", "suit": "hearts"}], "Priya": [{"rank": "K", "suit": "diamonds"}, {"rank": "J", "suit": "hearts"}, {"rank": "J", "suit": "spades"}]}


game_id: 1ff8d758-8e86-4cd8-b1c2-29045b41a290
timestamp: 2026-01-25 00:10:06.064399
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped 4 for 5 at pos 5
hand_json:
[{"rank": "4", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 1ff8d758-8e86-4cd8-b1c2-29045b41a290
timestamp: 2026-01-25 00:10:06.070217
player_id: cpu_1
player_name: Sofia
action: take_discard
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: took 5 from discard
visible_opponents_json:
{"Marcus": [{"rank": "4", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}, {"rank": "4", "suit": "clubs"}], "Diego": [{"rank": "4", "suit": "hearts"}, {"rank": "8", "suit": "hearts"}], "Priya": [{"rank": "K", "suit": "diamonds"}, {"rank": "J", "suit": "hearts"}, {"rank": "J", "suit": "spades"}]}


game_id: 1ff8d758-8e86-4cd8-b1c2-29045b41a290
timestamp: 2026-01-25 00:10:06.076565
player_id: cpu_1
player_name: Sofia
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped 5 for 5 at pos 2
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: 1ff8d758-8e86-4cd8-b1c2-29045b41a290
timestamp: 2026-01-25 00:10:06.082781
player_id: cpu_2
player_name: Diego
action: draw_deck
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}]

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


game_id: 1ff8d758-8e86-4cd8-b1c2-29045b41a290
timestamp: 2026-01-25 00:10:06.088770
player_id: cpu_2
player_name: Diego
action: swap
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: swapped K for 8 at pos 3
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}]

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


game_id: 1ff8d758-8e86-4cd8-b1c2-29045b41a290
timestamp: 2026-01-25 00:10:06.094383
player_id: cpu_3
player_name: Priya
action: take_discard
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: took 8 from discard
hand_json:
[{"rank": "7", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": true}]

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


game_id: 1ff8d758-8e86-4cd8-b1c2-29045b41a290
timestamp: 2026-01-25 00:10:06.099911
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: swapped 8 for J at pos 2
hand_json:
[{"rank": "7", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": true}]

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


game_id: 1ff8d758-8e86-4cd8-b1c2-29045b41a290
timestamp: 2026-01-25 00:10:06.105640
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: A
card_suit: spades
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 1ff8d758-8e86-4cd8-b1c2-29045b41a290
timestamp: 2026-01-25 00:10:06.111257
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: A
card_suit: spades
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: swapped A for 4 at pos 2
hand_json:
[{"rank": "4", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 1ff8d758-8e86-4cd8-b1c2-29045b41a290
timestamp: 2026-01-25 00:10:06.117418
player_id: cpu_1
player_name: Sofia
action: take_discard
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: 1ff8d758-8e86-4cd8-b1c2-29045b41a290
timestamp: 2026-01-25 00:10:06.123399
player_id: cpu_1
player_name: Sofia
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped 4 for 6 at pos 3
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: 1ff8d758-8e86-4cd8-b1c2-29045b41a290
timestamp: 2026-01-25 00:10:06.129645
player_id: cpu_2
player_name: Diego
action: take_discard
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}]

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


game_id: 1ff8d758-8e86-4cd8-b1c2-29045b41a290
timestamp: 2026-01-25 00:10:06.135864
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "K", "suit": "hearts"}
decision_reason: swapped 6 for K at pos 0
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}]

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


game_id: 1ff8d758-8e86-4cd8-b1c2-29045b41a290
timestamp: 2026-01-25 00:10:06.141926
player_id: cpu_3
player_name: Priya
action: take_discard
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: took K from discard
hand_json:
[{"rank": "7", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": true}]

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


game_id: 1ff8d758-8e86-4cd8-b1c2-29045b41a290
timestamp: 2026-01-25 00:10:06.148253
player_id: cpu_3
player_name: Priya
action: swap
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: swapped K for J at pos 5
hand_json:
[{"rank": "7", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: 1ff8d758-8e86-4cd8-b1c2-29045b41a290
timestamp: 2026-01-25 00:10:06.154312
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: Q
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 1ff8d758-8e86-4cd8-b1c2-29045b41a290
timestamp: 2026-01-25 00:10:06.166554
player_id: cpu_1
player_name: Sofia
action: draw_deck
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: 1ff8d758-8e86-4cd8-b1c2-29045b41a290
timestamp: 2026-01-25 00:10:06.178005
player_id: cpu_2
player_name: Diego
action: take_discard
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}]

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


game_id: 1ff8d758-8e86-4cd8-b1c2-29045b41a290
timestamp: 2026-01-25 00:10:06.183962
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: swapped 6 for 10 at pos 1
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}]

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


game_id: 1ff8d758-8e86-4cd8-b1c2-29045b41a290
timestamp: 2026-01-25 00:10:06.190425
player_id: cpu_3
player_name: Priya
action: draw_deck
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: 1ff8d758-8e86-4cd8-b1c2-29045b41a290
timestamp: 2026-01-25 00:10:06.196039
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: swapped 7 for 8 at pos 2
hand_json:
[{"rank": "7", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: 1ff8d758-8e86-4cd8-b1c2-29045b41a290
timestamp: 2026-01-25 00:10:06.201866
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Sofia": [{"rank": "3", "suit": "diamonds"}, {"rank": "5", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}, {"rank": "K", "suit": "spades"}], "Diego": [{"rank": "6", "suit": "hearts"}, {"rank": "6", "suit": "spades"}, {"rank": "4", "suit": "hearts"}, {"rank": "K", "suit": "clubs"}], "Priya": [{"rank": "K", "suit": "diamonds"}, {"rank": "7", "suit": "hearts"}, {"rank": "K", "suit": "hearts"}]}


game_id: 1ff8d758-8e86-4cd8-b1c2-29045b41a290
timestamp: 2026-01-25 00:10:06.208193
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: swapped 7 for Q at pos 4
hand_json:
[{"rank": "4", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 1ff8d758-8e86-4cd8-b1c2-29045b41a290
timestamp: 2026-01-25 00:10:06.214770
player_id: cpu_1
player_name: Sofia
action: draw_deck
card_rank: 9
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Marcus": [{"rank": "A", "suit": "spades"}, {"rank": "2", "suit": "hearts"}, {"rank": "7", "suit": "clubs"}, {"rank": "4", "suit": "clubs"}], "Diego": [{"rank": "6", "suit": "hearts"}, {"rank": "6", "suit": "spades"}, {"rank": "4", "suit": "hearts"}, {"rank": "K", "suit": "clubs"}], "Priya": [{"rank": "K", "suit": "diamonds"}, {"rank": "7", "suit": "hearts"}, {"rank": "K", "suit": "hearts"}]}


game_id: 1ff8d758-8e86-4cd8-b1c2-29045b41a290
timestamp: 2026-01-25 00:10:06.226433
player_id: cpu_2
player_name: Diego
action: draw_deck
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}]

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


game_id: 1ff8d758-8e86-4cd8-b1c2-29045b41a290
timestamp: 2026-01-25 00:10:06.232367
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "3", "suit": "clubs"}
decision_reason: swapped 3 for 3 at pos 4
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}]

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


game_id: 1ff8d758-8e86-4cd8-b1c2-29045b41a290
timestamp: 2026-01-25 00:10:06.238250
player_id: cpu_3
player_name: Priya
action: take_discard
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "7", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: 1ff8d758-8e86-4cd8-b1c2-29045b41a290
timestamp: 2026-01-25 00:10:06.244470
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped 3 for 7 at pos 2
hand_json:
[{"rank": "7", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: 1ff8d758-8e86-4cd8-b1c2-29045b41a290
timestamp: 2026-01-25 00:10:06.250636
player_id: cpu_0
player_name: Marcus
action: take_discard
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "4", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 1ff8d758-8e86-4cd8-b1c2-29045b41a290
timestamp: 2026-01-25 00:10:06.257213
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: swapped 7 for 8 at pos 1
hand_json:
[{"rank": "4", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 1ff8d758-8e86-4cd8-b1c2-29045b41a290
timestamp: 2026-01-25 00:10:06.263740
player_id: cpu_1
player_name: Sofia
action: draw_deck
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Marcus": [{"rank": "7", "suit": "hearts"}, {"rank": "A", "suit": "spades"}, {"rank": "2", "suit": "hearts"}, {"rank": "7", "suit": "clubs"}, {"rank": "4", "suit": "clubs"}], "Diego": [{"rank": "6", "suit": "hearts"}, {"rank": "6", "suit": "spades"}, {"rank": "4", "suit": "hearts"}, {"rank": "K", "suit": "clubs"}, {"rank": "3", "suit": "spades"}], "Priya": [{"rank": "K", "suit": "diamonds"}, {"rank": "3", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}]}


game_id: 1ff8d758-8e86-4cd8-b1c2-29045b41a290
timestamp: 2026-01-25 00:10:06.269990
player_id: cpu_1
player_name: Sofia
action: swap
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped 2 for 5 at pos 2
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: 1ff8d758-8e86-4cd8-b1c2-29045b41a290
timestamp: 2026-01-25 00:10:06.275962
player_id: cpu_2
player_name: Diego
action: take_discard
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}]

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


game_id: 1ff8d758-8e86-4cd8-b1c2-29045b41a290
timestamp: 2026-01-25 00:10:06.282244
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 0
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}]

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


game_id: 1ff8d758-8e86-4cd8-b1c2-29045b41a290
timestamp: 2026-01-25 00:10:06.288616
player_id: cpu_3
player_name: Priya
action: take_discard
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "7", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: 1ff8d758-8e86-4cd8-b1c2-29045b41a290
timestamp: 2026-01-25 00:10:06.294666
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "A", "suit": "diamonds"}
decision_reason: swapped 6 for A at pos 4
hand_json:
[{"rank": "7", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: 1ff8d758-8e86-4cd8-b1c2-29045b41a290
timestamp: 2026-01-25 00:10:06.301109
player_id: cpu_0
player_name: Marcus
action: take_discard
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: took A from discard
hand_json:
[{"rank": "4", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 1ff8d758-8e86-4cd8-b1c2-29045b41a290
timestamp: 2026-01-25 00:10:06.307021
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped A for 7 at pos 1
hand_json:
[{"rank": "4", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 1ff8d758-8e86-4cd8-b1c2-29045b41a290
timestamp: 2026-01-25 00:10:06.313395
player_id: cpu_1
player_name: Sofia
action: take_discard
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: 1ff8d758-8e86-4cd8-b1c2-29045b41a290
timestamp: 2026-01-25 00:10:06.319880
player_id: cpu_1
player_name: Sofia
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: swapped 7 for 9 at pos 1
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: 1ff8d758-8e86-4cd8-b1c2-29045b41a290
timestamp: 2026-01-25 00:10:06.326661
player_id: cpu_2
player_name: Diego
action: draw_deck
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}]

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


game_id: 1ff8d758-8e86-4cd8-b1c2-29045b41a290
timestamp: 2026-01-25 00:10:06.334709
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: swapped 7 for J at pos 5
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}]

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


game_id: 1ff8d758-8e86-4cd8-b1c2-29045b41a290
timestamp: 2026-01-25 00:10:06.341467
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": "7", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: 1ff8d758-8e86-4cd8-b1c2-29045b41a290
timestamp: 2026-01-25 00:10:06.347676
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped 2 for 6 at pos 4
hand_json:
[{"rank": "7", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: 1ff8d758-8e86-4cd8-b1c2-29045b41a290
timestamp: 2026-01-25 00:10:06.353965
player_id: cpu_0
player_name: Marcus
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": "4", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 1ff8d758-8e86-4cd8-b1c2-29045b41a290
timestamp: 2026-01-25 00:10:06.359918
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped 6 for 7 at pos 4
hand_json:
[{"rank": "4", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 1ff8d758-8e86-4cd8-b1c2-29045b41a290
timestamp: 2026-01-25 00:10:06.366013
player_id: cpu_1
player_name: Sofia
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": "3", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: 1ff8d758-8e86-4cd8-b1c2-29045b41a290
timestamp: 2026-01-25 00:10:06.371999
player_id: cpu_1
player_name: Sofia
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "A", "suit": "clubs"}
decision_reason: swapped 7 for A at pos 4
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: d9a0cffe-f155-4825-b496-03e546af171d
timestamp: 2026-01-25 00:10:06.389313
player_id: cpu_0
player_name: Sage
action: take_discard
card_rank: 5
card_suit: hearts
decision_reason: took 5 from discard
hand_json:
[{"rank": "7", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Maya": [{"rank": "A", "suit": "diamonds"}, {"rank": "Q", "suit": "hearts"}], "Diego": [{"rank": "6", "suit": "clubs"}, {"rank": "7", "suit": "hearts"}], "River": [{"rank": "K", "suit": "clubs"}, {"rank": "J", "suit": "hearts"}]}


game_id: d9a0cffe-f155-4825-b496-03e546af171d
timestamp: 2026-01-25 00:10:06.395242
player_id: cpu_0
player_name: Sage
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: swapped 5 for Q at pos 4
hand_json:
[{"rank": "7", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Maya": [{"rank": "A", "suit": "diamonds"}, {"rank": "Q", "suit": "hearts"}], "Diego": [{"rank": "6", "suit": "clubs"}, {"rank": "7", "suit": "hearts"}], "River": [{"rank": "K", "suit": "clubs"}, {"rank": "J", "suit": "hearts"}]}


game_id: d9a0cffe-f155-4825-b496-03e546af171d
timestamp: 2026-01-25 00:10:06.401108
player_id: cpu_1
player_name: Maya
action: take_discard
card_rank: Q
card_suit: diamonds
decision_reason: took Q from discard
hand_json:
[{"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}]

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


game_id: d9a0cffe-f155-4825-b496-03e546af171d
timestamp: 2026-01-25 00:10:06.406981
player_id: cpu_1
player_name: Maya
action: swap
card_rank: Q
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: swapped Q for 9 at pos 0
hand_json:
[{"rank": "Q", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}]

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


game_id: d9a0cffe-f155-4825-b496-03e546af171d
timestamp: 2026-01-25 00:10:06.413199
player_id: cpu_2
player_name: Diego
action: draw_deck
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}]

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


game_id: d9a0cffe-f155-4825-b496-03e546af171d
timestamp: 2026-01-25 00:10:06.422982
player_id: cpu_2
player_name: Diego
action: swap
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped K for 7 at pos 5
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: d9a0cffe-f155-4825-b496-03e546af171d
timestamp: 2026-01-25 00:10:06.429120
player_id: cpu_3
player_name: River
action: take_discard
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "6", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": true}]

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


game_id: d9a0cffe-f155-4825-b496-03e546af171d
timestamp: 2026-01-25 00:10:06.435105
player_id: cpu_3
player_name: River
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: swapped 7 for J at pos 5
hand_json:
[{"rank": "6", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}]

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


game_id: d9a0cffe-f155-4825-b496-03e546af171d
timestamp: 2026-01-25 00:10:06.440762
player_id: cpu_0
player_name: Sage
action: draw_deck
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}]

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


game_id: d9a0cffe-f155-4825-b496-03e546af171d
timestamp: 2026-01-25 00:10:06.446375
player_id: cpu_0
player_name: Sage
action: swap
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped 2 for 6 at pos 2
hand_json:
[{"rank": "7", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}]

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


game_id: d9a0cffe-f155-4825-b496-03e546af171d
timestamp: 2026-01-25 00:10:06.452754
player_id: cpu_1
player_name: Maya
action: take_discard
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "Q", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}]

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


game_id: d9a0cffe-f155-4825-b496-03e546af171d
timestamp: 2026-01-25 00:10:06.461493
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: swapped 6 for Q at pos 0
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}]

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


game_id: d9a0cffe-f155-4825-b496-03e546af171d
timestamp: 2026-01-25 00:10:06.469204
player_id: cpu_2
player_name: Diego
action: draw_deck
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: d9a0cffe-f155-4825-b496-03e546af171d
timestamp: 2026-01-25 00:10:06.475085
player_id: cpu_2
player_name: Diego
action: swap
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped A for 6 at pos 1
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: d9a0cffe-f155-4825-b496-03e546af171d
timestamp: 2026-01-25 00:10:06.481093
player_id: cpu_3
player_name: River
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "6", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}]

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


game_id: d9a0cffe-f155-4825-b496-03e546af171d
timestamp: 2026-01-25 00:10:06.487033
player_id: cpu_3
player_name: River
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped 6 for 7 at pos 5
hand_json:
[{"rank": "6", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: d9a0cffe-f155-4825-b496-03e546af171d
timestamp: 2026-01-25 00:10:06.493017
player_id: cpu_0
player_name: Sage
action: draw_deck
card_rank: A
card_suit: spades
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Maya": [{"rank": "6", "suit": "diamonds"}, {"rank": "A", "suit": "diamonds"}, {"rank": "Q", "suit": "hearts"}], "Diego": [{"rank": "A", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}], "River": [{"rank": "K", "suit": "clubs"}, {"rank": "6", "suit": "clubs"}]}


game_id: d9a0cffe-f155-4825-b496-03e546af171d
timestamp: 2026-01-25 00:10:06.499222
player_id: cpu_0
player_name: Sage
action: swap
card_rank: A
card_suit: spades
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped A for 5 at pos 4
hand_json:
[{"rank": "7", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Maya": [{"rank": "6", "suit": "diamonds"}, {"rank": "A", "suit": "diamonds"}, {"rank": "Q", "suit": "hearts"}], "Diego": [{"rank": "A", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}], "River": [{"rank": "K", "suit": "clubs"}, {"rank": "6", "suit": "clubs"}]}


game_id: d9a0cffe-f155-4825-b496-03e546af171d
timestamp: 2026-01-25 00:10:06.505388
player_id: cpu_1
player_name: Maya
action: take_discard
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}]

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


game_id: d9a0cffe-f155-4825-b496-03e546af171d
timestamp: 2026-01-25 00:10:06.512150
player_id: cpu_1
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 3
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}]

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


game_id: d9a0cffe-f155-4825-b496-03e546af171d
timestamp: 2026-01-25 00:10:06.518259
player_id: cpu_2
player_name: Diego
action: draw_deck
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: d9a0cffe-f155-4825-b496-03e546af171d
timestamp: 2026-01-25 00:10:06.524106
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: swapped 4 for 4 at pos 4
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: d9a0cffe-f155-4825-b496-03e546af171d
timestamp: 2026-01-25 00:10:06.530054
player_id: cpu_3
player_name: River
action: take_discard
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "6", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: d9a0cffe-f155-4825-b496-03e546af171d
timestamp: 2026-01-25 00:10:06.536063
player_id: cpu_3
player_name: River
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 4 for 6 at pos 5
hand_json:
[{"rank": "6", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: d9a0cffe-f155-4825-b496-03e546af171d
timestamp: 2026-01-25 00:10:06.541809
player_id: cpu_0
player_name: Sage
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "7", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}]

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


game_id: d9a0cffe-f155-4825-b496-03e546af171d
timestamp: 2026-01-25 00:10:06.547418
player_id: cpu_0
player_name: Sage
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped 6 for 7 at pos 0
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}]

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


game_id: d9a0cffe-f155-4825-b496-03e546af171d
timestamp: 2026-01-25 00:10:06.553257
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}]

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


game_id: d9a0cffe-f155-4825-b496-03e546af171d
timestamp: 2026-01-25 00:10:06.558850
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped 5 for 6 at pos 0
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}]

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


game_id: d9a0cffe-f155-4825-b496-03e546af171d
timestamp: 2026-01-25 00:10:06.565375
player_id: cpu_2
player_name: Diego
action: draw_deck
card_rank: 10
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: d9a0cffe-f155-4825-b496-03e546af171d
timestamp: 2026-01-25 00:10:06.580219
player_id: cpu_3
player_name: River
action: draw_deck
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: d9a0cffe-f155-4825-b496-03e546af171d
timestamp: 2026-01-25 00:10:06.586246
player_id: cpu_3
player_name: River
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: swapped 5 for 9 at pos 4
hand_json:
[{"rank": "6", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: d9a0cffe-f155-4825-b496-03e546af171d
timestamp: 2026-01-25 00:10:06.592295
player_id: cpu_0
player_name: Sage
action: draw_deck
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}]

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


game_id: d9a0cffe-f155-4825-b496-03e546af171d
timestamp: 2026-01-25 00:10:06.598319
player_id: cpu_0
player_name: Sage
action: swap
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 2 for 6 at pos 0
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}]

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


game_id: d9a0cffe-f155-4825-b496-03e546af171d
timestamp: 2026-01-25 00:10:06.603960
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}]

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


game_id: d9a0cffe-f155-4825-b496-03e546af171d
timestamp: 2026-01-25 00:10:06.615707
player_id: cpu_2
player_name: Diego
action: draw_deck
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Sage": [{"rank": "2", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}, {"rank": "A", "suit": "spades"}], "Maya": [{"rank": "5", "suit": "clubs"}, {"rank": "A", "suit": "diamonds"}, {"rank": "5", "suit": "hearts"}], "River": [{"rank": "K", "suit": "clubs"}, {"rank": "5", "suit": "spades"}, {"rank": "4", "suit": "hearts"}]}


game_id: d9a0cffe-f155-4825-b496-03e546af171d
timestamp: 2026-01-25 00:10:06.621320
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "3", "suit": "spades"}
decision_reason: swapped 7 for 3 at pos 2
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: d9a0cffe-f155-4825-b496-03e546af171d
timestamp: 2026-01-25 00:10:06.626803
player_id: cpu_3
player_name: River
action: take_discard
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "6", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: d9a0cffe-f155-4825-b496-03e546af171d
timestamp: 2026-01-25 00:10:06.632675
player_id: cpu_3
player_name: River
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped 3 for 5 at pos 4
hand_json:
[{"rank": "6", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: d9a0cffe-f155-4825-b496-03e546af171d
timestamp: 2026-01-25 00:10:06.639052
player_id: cpu_0
player_name: Sage
action: take_discard
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}]

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


game_id: d9a0cffe-f155-4825-b496-03e546af171d
timestamp: 2026-01-25 00:10:06.645195
player_id: cpu_0
player_name: Sage
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: swapped 5 for Q at pos 3
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}]

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


game_id: d9a0cffe-f155-4825-b496-03e546af171d
timestamp: 2026-01-25 00:10:06.651302
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Sage": [{"rank": "2", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}, {"rank": "5", "suit": "spades"}, {"rank": "A", "suit": "spades"}], "Diego": [{"rank": "A", "suit": "clubs"}, {"rank": "7", "suit": "diamonds"}, {"rank": "4", "suit": "spades"}, {"rank": "K", "suit": "hearts"}], "River": [{"rank": "K", "suit": "clubs"}, {"rank": "3", "suit": "spades"}, {"rank": "4", "suit": "hearts"}]}


game_id: d9a0cffe-f155-4825-b496-03e546af171d
timestamp: 2026-01-25 00:10:06.656979
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped 3 for 5 at pos 0
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}]

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


game_id: d9a0cffe-f155-4825-b496-03e546af171d
timestamp: 2026-01-25 00:10:06.662909
player_id: cpu_2
player_name: Diego
action: take_discard
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: d9a0cffe-f155-4825-b496-03e546af171d
timestamp: 2026-01-25 00:10:06.669047
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "K", "suit": "spades"}
decision_reason: swapped 5 for K at pos 3
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: d9a0cffe-f155-4825-b496-03e546af171d
timestamp: 2026-01-25 00:10:06.674872
player_id: cpu_3
player_name: River
action: take_discard
card_rank: K
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: took K from discard
hand_json:
[{"rank": "6", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: d9a0cffe-f155-4825-b496-03e546af171d
timestamp: 2026-01-25 00:10:06.681284
player_id: cpu_3
player_name: River
action: swap
card_rank: K
card_suit: spades
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: swapped K for 4 at pos 5
hand_json:
[{"rank": "6", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: d9a0cffe-f155-4825-b496-03e546af171d
timestamp: 2026-01-25 00:10:06.687316
player_id: cpu_0
player_name: Sage
action: take_discard
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}]

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


game_id: d9a0cffe-f155-4825-b496-03e546af171d
timestamp: 2026-01-25 00:10:06.693655
player_id: cpu_0
player_name: Sage
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped 4 for 5 at pos 3
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}]

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


game_id: d9a0cffe-f155-4825-b496-03e546af171d
timestamp: 2026-01-25 00:10:06.699784
player_id: cpu_1
player_name: Maya
action: take_discard
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}]

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


game_id: d9a0cffe-f155-4825-b496-03e546af171d
timestamp: 2026-01-25 00:10:06.706614
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "2", "suit": "hearts"}
decision_reason: swapped 5 for 2 at pos 2
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}]

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


game_id: d9a0cffe-f155-4825-b496-03e546af171d
timestamp: 2026-01-25 00:10:06.713047
player_id: cpu_2
player_name: Diego
action: take_discard
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: took 2 from discard
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: d9a0cffe-f155-4825-b496-03e546af171d
timestamp: 2026-01-25 00:10:06.720179
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 2 for 7 at pos 2
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: d9a0cffe-f155-4825-b496-03e546af171d
timestamp: 2026-01-25 00:10:06.726662
player_id: cpu_3
player_name: River
action: take_discard
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "6", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: d9a0cffe-f155-4825-b496-03e546af171d
timestamp: 2026-01-25 00:10:06.733170
player_id: cpu_3
player_name: River
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "2", "suit": "clubs"}
decision_reason: swapped 7 for 2 at pos 2
hand_json:
[{"rank": "6", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: d9a0cffe-f155-4825-b496-03e546af171d
timestamp: 2026-01-25 00:10:06.738994
player_id: cpu_0
player_name: Sage
action: take_discard
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: took 2 from discard
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}]

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


game_id: d9a0cffe-f155-4825-b496-03e546af171d
timestamp: 2026-01-25 00:10:06.745612
player_id: cpu_0
player_name: Sage
action: swap
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: swapped 2 for 4 at pos 3
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}]

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


game_id: d9a0cffe-f155-4825-b496-03e546af171d
timestamp: 2026-01-25 00:10:06.751638
player_id: cpu_1
player_name: Maya
action: take_discard
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}]

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


game_id: d9a0cffe-f155-4825-b496-03e546af171d
timestamp: 2026-01-25 00:10:06.757725
player_id: cpu_1
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": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}]

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


game_id: d9a0cffe-f155-4825-b496-03e546af171d
timestamp: 2026-01-25 00:10:06.763871
player_id: cpu_2
player_name: Diego
action: take_discard
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: d9a0cffe-f155-4825-b496-03e546af171d
timestamp: 2026-01-25 00:10:06.769967
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "K", "suit": "diamonds"}
decision_reason: swapped 5 for K at pos 0
hand_json:
[{"rank": "5", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: d9a0cffe-f155-4825-b496-03e546af171d
timestamp: 2026-01-25 00:10:06.775795
player_id: cpu_3
player_name: River
action: take_discard
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: took K from discard
hand_json:
[{"rank": "6", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: d9a0cffe-f155-4825-b496-03e546af171d
timestamp: 2026-01-25 00:10:06.781653
player_id: cpu_3
player_name: River
action: swap
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped K for 7 at pos 2
hand_json:
[{"rank": "6", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: d9a0cffe-f155-4825-b496-03e546af171d
timestamp: 2026-01-25 00:10:06.787756
player_id: cpu_0
player_name: Sage
action: take_discard
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}]

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


game_id: d9a0cffe-f155-4825-b496-03e546af171d
timestamp: 2026-01-25 00:10:06.794126
player_id: cpu_0
player_name: Sage
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: swapped 7 for 8 at pos 1
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}]

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


game_id: d9a0cffe-f155-4825-b496-03e546af171d
timestamp: 2026-01-25 00:10:06.800513
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: 8
card_suit: spades
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}]

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


game_id: d9a0cffe-f155-4825-b496-03e546af171d
timestamp: 2026-01-25 00:10:06.806554
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 8
card_suit: spades
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: swapped 8 for 4 at pos 4
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": true}]

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


game_id: 10a548c8-1ab8-4963-b1ee-aa52bb45167a
timestamp: 2026-01-25 00:10:06.824687
player_id: cpu_0
player_name: Kenji
action: take_discard
card_rank: K
card_suit: spades
decision_reason: took K from discard
hand_json:
[{"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}]

visible_opponents_json:
{"Diego": [{"rank": "J", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}], "River": [{"rank": "4", "suit": "diamonds"}, {"rank": "Q", "suit": "spades"}], "Maya": [{"rank": "J", "suit": "hearts"}, {"rank": "2", "suit": "hearts"}]}


game_id: 10a548c8-1ab8-4963-b1ee-aa52bb45167a
timestamp: 2026-01-25 00:10:06.830787
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: K
card_suit: spades
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: swapped K for J at pos 1
hand_json:
[{"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}]

visible_opponents_json:
{"Diego": [{"rank": "J", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}], "River": [{"rank": "4", "suit": "diamonds"}, {"rank": "Q", "suit": "spades"}], "Maya": [{"rank": "J", "suit": "hearts"}, {"rank": "2", "suit": "hearts"}]}


game_id: 10a548c8-1ab8-4963-b1ee-aa52bb45167a
timestamp: 2026-01-25 00:10:06.836516
player_id: cpu_1
player_name: Diego
action: take_discard
card_rank: J
card_suit: clubs
decision_reason: took J from discard
hand_json:
[{"rank": "5", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": false}]

visible_opponents_json:
{"Kenji": [{"rank": "K", "suit": "spades"}, {"rank": "Q", "suit": "diamonds"}], "River": [{"rank": "4", "suit": "diamonds"}, {"rank": "Q", "suit": "spades"}], "Maya": [{"rank": "J", "suit": "hearts"}, {"rank": "2", "suit": "hearts"}]}


game_id: 10a548c8-1ab8-4963-b1ee-aa52bb45167a
timestamp: 2026-01-25 00:10:06.842100
player_id: cpu_1
player_name: Diego
action: swap
card_rank: J
card_suit: clubs
discard_top_json: {"rank": "A", "suit": "clubs"}
decision_reason: swapped J for A at pos 5
hand_json:
[{"rank": "5", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": true}]

visible_opponents_json:
{"Kenji": [{"rank": "K", "suit": "spades"}, {"rank": "Q", "suit": "diamonds"}], "River": [{"rank": "4", "suit": "diamonds"}, {"rank": "Q", "suit": "spades"}], "Maya": [{"rank": "J", "suit": "hearts"}, {"rank": "2", "suit": "hearts"}]}


game_id: 10a548c8-1ab8-4963-b1ee-aa52bb45167a
timestamp: 2026-01-25 00:10:06.847707
player_id: cpu_2
player_name: River
action: take_discard
card_rank: A
card_suit: clubs
decision_reason: took A from discard
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": true}]

visible_opponents_json:
{"Kenji": [{"rank": "K", "suit": "spades"}, {"rank": "Q", "suit": "diamonds"}], "Diego": [{"rank": "J", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}, {"rank": "J", "suit": "clubs"}], "Maya": [{"rank": "J", "suit": "hearts"}, {"rank": "2", "suit": "hearts"}]}


game_id: 10a548c8-1ab8-4963-b1ee-aa52bb45167a
timestamp: 2026-01-25 00:10:06.853289
player_id: cpu_2
player_name: River
action: swap
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: swapped A for Q at pos 5
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}]

visible_opponents_json:
{"Kenji": [{"rank": "K", "suit": "spades"}, {"rank": "Q", "suit": "diamonds"}], "Diego": [{"rank": "J", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}, {"rank": "J", "suit": "clubs"}], "Maya": [{"rank": "J", "suit": "hearts"}, {"rank": "2", "suit": "hearts"}]}


game_id: 10a548c8-1ab8-4963-b1ee-aa52bb45167a
timestamp: 2026-01-25 00:10:06.861523
player_id: cpu_3
player_name: Maya
action: draw_deck
card_rank: A
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: 10a548c8-1ab8-4963-b1ee-aa52bb45167a
timestamp: 2026-01-25 00:10:06.867470
player_id: cpu_3
player_name: Maya
action: swap
card_rank: A
card_suit: spades
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: swapped A for J at pos 0
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: 10a548c8-1ab8-4963-b1ee-aa52bb45167a
timestamp: 2026-01-25 00:10:06.873861
player_id: cpu_0
player_name: Kenji
action: draw_deck
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}]

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


game_id: 10a548c8-1ab8-4963-b1ee-aa52bb45167a
timestamp: 2026-01-25 00:10:06.879641
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: swapped 2 for Q at pos 3
hand_json:
[{"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}]

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


game_id: 10a548c8-1ab8-4963-b1ee-aa52bb45167a
timestamp: 2026-01-25 00:10:06.885659
player_id: cpu_1
player_name: Diego
action: draw_deck
card_rank: 10
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": true}]

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


game_id: 10a548c8-1ab8-4963-b1ee-aa52bb45167a
timestamp: 2026-01-25 00:10:06.897557
player_id: cpu_2
player_name: River
action: draw_deck
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: 10a548c8-1ab8-4963-b1ee-aa52bb45167a
timestamp: 2026-01-25 00:10:06.903346
player_id: cpu_2
player_name: River
action: swap
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: swapped A for 8 at pos 2
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: 10a548c8-1ab8-4963-b1ee-aa52bb45167a
timestamp: 2026-01-25 00:10:06.909052
player_id: cpu_3
player_name: Maya
action: draw_deck
card_rank: 9
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: 10a548c8-1ab8-4963-b1ee-aa52bb45167a
timestamp: 2026-01-25 00:10:06.920322
player_id: cpu_0
player_name: Kenji
action: draw_deck
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}]

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


game_id: 10a548c8-1ab8-4963-b1ee-aa52bb45167a
timestamp: 2026-01-25 00:10:06.926084
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: swapped 5 for J at pos 5
hand_json:
[{"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: 10a548c8-1ab8-4963-b1ee-aa52bb45167a
timestamp: 2026-01-25 00:10:06.932236
player_id: cpu_1
player_name: Diego
action: draw_deck
card_rank: 9
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Kenji": [{"rank": "K", "suit": "spades"}, {"rank": "2", "suit": "clubs"}, {"rank": "5", "suit": "hearts"}], "River": [{"rank": "4", "suit": "diamonds"}, {"rank": "A", "suit": "diamonds"}, {"rank": "A", "suit": "clubs"}], "Maya": [{"rank": "A", "suit": "spades"}, {"rank": "2", "suit": "hearts"}]}


game_id: 10a548c8-1ab8-4963-b1ee-aa52bb45167a
timestamp: 2026-01-25 00:10:06.938045
player_id: cpu_1
player_name: Diego
action: swap
card_rank: 9
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: swapped 9 for J at pos 2
hand_json:
[{"rank": "5", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": true}]

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


game_id: 10a548c8-1ab8-4963-b1ee-aa52bb45167a
timestamp: 2026-01-25 00:10:06.948076
player_id: cpu_2
player_name: River
action: draw_deck
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: 10a548c8-1ab8-4963-b1ee-aa52bb45167a
timestamp: 2026-01-25 00:10:06.954927
player_id: cpu_2
player_name: River
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: swapped 5 for 8 at pos 1
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: 10a548c8-1ab8-4963-b1ee-aa52bb45167a
timestamp: 2026-01-25 00:10:06.961206
player_id: cpu_3
player_name: Maya
action: draw_deck
card_rank: 8
card_suit: spades
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Kenji": [{"rank": "K", "suit": "spades"}, {"rank": "2", "suit": "clubs"}, {"rank": "5", "suit": "hearts"}], "Diego": [{"rank": "9", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}, {"rank": "J", "suit": "clubs"}], "River": [{"rank": "4", "suit": "diamonds"}, {"rank": "5", "suit": "clubs"}, {"rank": "A", "suit": "diamonds"}, {"rank": "A", "suit": "clubs"}]}


game_id: 10a548c8-1ab8-4963-b1ee-aa52bb45167a
timestamp: 2026-01-25 00:10:06.967315
player_id: cpu_3
player_name: Maya
action: swap
card_rank: 8
card_suit: spades
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: swapped 8 for 9 at pos 1
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: 10a548c8-1ab8-4963-b1ee-aa52bb45167a
timestamp: 2026-01-25 00:10:06.973086
player_id: cpu_0
player_name: Kenji
action: draw_deck
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: 10a548c8-1ab8-4963-b1ee-aa52bb45167a
timestamp: 2026-01-25 00:10:06.978755
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: swapped 7 for 4 at pos 4
hand_json:
[{"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: 10a548c8-1ab8-4963-b1ee-aa52bb45167a
timestamp: 2026-01-25 00:10:06.984418
player_id: cpu_1
player_name: Diego
action: take_discard
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "5", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": true}]

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


game_id: 10a548c8-1ab8-4963-b1ee-aa52bb45167a
timestamp: 2026-01-25 00:10:06.989802
player_id: cpu_1
player_name: Diego
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: swapped 4 for J at pos 5
hand_json:
[{"rank": "5", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: 10a548c8-1ab8-4963-b1ee-aa52bb45167a
timestamp: 2026-01-25 00:10:06.995214
player_id: cpu_2
player_name: River
action: draw_deck
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: 10a548c8-1ab8-4963-b1ee-aa52bb45167a
timestamp: 2026-01-25 00:10:07.001073
player_id: cpu_2
player_name: River
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped 3 for 5 at pos 1
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: 10a548c8-1ab8-4963-b1ee-aa52bb45167a
timestamp: 2026-01-25 00:10:07.007116
player_id: cpu_3
player_name: Maya
action: take_discard
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: 10a548c8-1ab8-4963-b1ee-aa52bb45167a
timestamp: 2026-01-25 00:10:07.017222
player_id: cpu_3
player_name: Maya
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: swapped 5 for 8 at pos 1
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: 10a548c8-1ab8-4963-b1ee-aa52bb45167a
timestamp: 2026-01-25 00:10:07.023601
player_id: cpu_0
player_name: Kenji
action: draw_deck
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: 10a548c8-1ab8-4963-b1ee-aa52bb45167a
timestamp: 2026-01-25 00:10:07.029877
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped 6 for 7 at pos 4
hand_json:
[{"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: 10a548c8-1ab8-4963-b1ee-aa52bb45167a
timestamp: 2026-01-25 00:10:07.036533
player_id: cpu_1
player_name: Diego
action: take_discard
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "5", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: 10a548c8-1ab8-4963-b1ee-aa52bb45167a
timestamp: 2026-01-25 00:10:07.043461
player_id: cpu_1
player_name: Diego
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "3", "suit": "clubs"}
decision_reason: swapped 7 for 3 at pos 4
hand_json:
[{"rank": "5", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: 10a548c8-1ab8-4963-b1ee-aa52bb45167a
timestamp: 2026-01-25 00:10:07.049337
player_id: cpu_2
player_name: River
action: take_discard
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: 10a548c8-1ab8-4963-b1ee-aa52bb45167a
timestamp: 2026-01-25 00:10:07.055509
player_id: cpu_2
player_name: River
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "K", "suit": "clubs"}
decision_reason: swapped 3 for K at pos 4
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: 10a548c8-1ab8-4963-b1ee-aa52bb45167a
timestamp: 2026-01-25 00:10:07.061734
player_id: cpu_3
player_name: Maya
action: take_discard
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: took K from discard
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: 10a548c8-1ab8-4963-b1ee-aa52bb45167a
timestamp: 2026-01-25 00:10:07.067675
player_id: cpu_3
player_name: Maya
action: swap
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped K for 5 at pos 1
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: 10a548c8-1ab8-4963-b1ee-aa52bb45167a
timestamp: 2026-01-25 00:10:07.073927
player_id: cpu_0
player_name: Kenji
action: take_discard
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: 10a548c8-1ab8-4963-b1ee-aa52bb45167a
timestamp: 2026-01-25 00:10:07.080132
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "K", "suit": "diamonds"}
decision_reason: swapped 5 for K at pos 2
hand_json:
[{"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: 10a548c8-1ab8-4963-b1ee-aa52bb45167a
timestamp: 2026-01-25 00:10:07.086325
player_id: cpu_1
player_name: Diego
action: take_discard
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: took K from discard
hand_json:
[{"rank": "5", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: 10a548c8-1ab8-4963-b1ee-aa52bb45167a
timestamp: 2026-01-25 00:10:07.092496
player_id: cpu_1
player_name: Diego
action: swap
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: swapped K for 9 at pos 2
hand_json:
[{"rank": "5", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: 10a548c8-1ab8-4963-b1ee-aa52bb45167a
timestamp: 2026-01-25 00:10:07.099416
player_id: cpu_2
player_name: River
action: draw_deck
card_rank: 10
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: 10a548c8-1ab8-4963-b1ee-aa52bb45167a
timestamp: 2026-01-25 00:10:07.111232
player_id: cpu_3
player_name: Maya
action: draw_deck
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: 10a548c8-1ab8-4963-b1ee-aa52bb45167a
timestamp: 2026-01-25 00:10:07.117849
player_id: cpu_3
player_name: Maya
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped 4 for 6 at pos 3
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: 10a548c8-1ab8-4963-b1ee-aa52bb45167a
timestamp: 2026-01-25 00:10:07.123816
player_id: cpu_0
player_name: Kenji
action: take_discard
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: 10a548c8-1ab8-4963-b1ee-aa52bb45167a
timestamp: 2026-01-25 00:10:07.129803
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: swapped 6 for Q at pos 0
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: 10a548c8-1ab8-4963-b1ee-aa52bb45167a
timestamp: 2026-01-25 00:10:07.135882
player_id: cpu_1
player_name: Diego
action: draw_deck
card_rank: Q
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: 10a548c8-1ab8-4963-b1ee-aa52bb45167a
timestamp: 2026-01-25 00:10:07.148905
player_id: cpu_2
player_name: River
action: draw_deck
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Kenji": [{"rank": "6", "suit": "diamonds"}, {"rank": "K", "suit": "spades"}, {"rank": "5", "suit": "clubs"}, {"rank": "2", "suit": "clubs"}, {"rank": "6", "suit": "hearts"}, {"rank": "5", "suit": "hearts"}], "Diego": [{"rank": "K", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}, {"rank": "7", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}], "Maya": [{"rank": "A", "suit": "spades"}, {"rank": "K", "suit": "clubs"}, {"rank": "4", "suit": "clubs"}, {"rank": "2", "suit": "hearts"}]}


game_id: 10a548c8-1ab8-4963-b1ee-aa52bb45167a
timestamp: 2026-01-25 00:10:07.155427
player_id: cpu_2
player_name: River
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 7 for 7 at pos 3
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: 10a548c8-1ab8-4963-b1ee-aa52bb45167a
timestamp: 2026-01-25 00:10:07.163389
player_id: cpu_3
player_name: Maya
action: take_discard
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: 10a548c8-1ab8-4963-b1ee-aa52bb45167a
timestamp: 2026-01-25 00:10:07.169320
player_id: cpu_3
player_name: Maya
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped 7 for 7 at pos 2
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: 86a55677-9a08-4b65-95dc-caaf7efb8c70
timestamp: 2026-01-25 00:10:07.186368
player_id: cpu_0
player_name: River
action: draw_deck
card_rank: Q
card_suit: spades
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}]

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


game_id: 86a55677-9a08-4b65-95dc-caaf7efb8c70
timestamp: 2026-01-25 00:10:07.198459
player_id: cpu_1
player_name: Sofia
action: take_discard
card_rank: Q
card_suit: spades
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: took Q from discard
hand_json:
[{"rank": "5", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: 86a55677-9a08-4b65-95dc-caaf7efb8c70
timestamp: 2026-01-25 00:10:07.204409
player_id: cpu_1
player_name: Sofia
action: swap
card_rank: Q
card_suit: spades
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped Q for 6 at pos 4
hand_json:
[{"rank": "5", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: 86a55677-9a08-4b65-95dc-caaf7efb8c70
timestamp: 2026-01-25 00:10:07.210161
player_id: cpu_2
player_name: Diego
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}]

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


game_id: 86a55677-9a08-4b65-95dc-caaf7efb8c70
timestamp: 2026-01-25 00:10:07.215934
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped 6 for 6 at pos 0
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}]

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


game_id: 86a55677-9a08-4b65-95dc-caaf7efb8c70
timestamp: 2026-01-25 00:10:07.222468
player_id: cpu_3
player_name: Priya
action: take_discard
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": false}]

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


game_id: 86a55677-9a08-4b65-95dc-caaf7efb8c70
timestamp: 2026-01-25 00:10:07.228209
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "K", "suit": "clubs"}
decision_reason: swapped 6 for K at pos 5
hand_json:
[{"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}]

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


game_id: 86a55677-9a08-4b65-95dc-caaf7efb8c70
timestamp: 2026-01-25 00:10:07.234384
player_id: cpu_0
player_name: River
action: take_discard
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: took K from discard
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}]

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


game_id: 86a55677-9a08-4b65-95dc-caaf7efb8c70
timestamp: 2026-01-25 00:10:07.240709
player_id: cpu_0
player_name: River
action: swap
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "spades"}
decision_reason: swapped K for 4 at pos 4
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}]

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


game_id: 86a55677-9a08-4b65-95dc-caaf7efb8c70
timestamp: 2026-01-25 00:10:07.246678
player_id: cpu_1
player_name: Sofia
action: take_discard
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "5", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: 86a55677-9a08-4b65-95dc-caaf7efb8c70
timestamp: 2026-01-25 00:10:07.253075
player_id: cpu_1
player_name: Sofia
action: swap
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped 4 for 5 at pos 0
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: 86a55677-9a08-4b65-95dc-caaf7efb8c70
timestamp: 2026-01-25 00:10:07.259661
player_id: cpu_2
player_name: Diego
action: take_discard
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}]

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


game_id: 86a55677-9a08-4b65-95dc-caaf7efb8c70
timestamp: 2026-01-25 00:10:07.267260
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped 5 for 7 at pos 1
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}]

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


game_id: 86a55677-9a08-4b65-95dc-caaf7efb8c70
timestamp: 2026-01-25 00:10:07.273116
player_id: cpu_3
player_name: Priya
action: take_discard
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}]

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


game_id: 86a55677-9a08-4b65-95dc-caaf7efb8c70
timestamp: 2026-01-25 00:10:07.279214
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: swapped 7 for 8 at pos 0
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}]

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


game_id: 86a55677-9a08-4b65-95dc-caaf7efb8c70
timestamp: 2026-01-25 00:10:07.285498
player_id: cpu_0
player_name: River
action: draw_deck
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}]

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


game_id: 86a55677-9a08-4b65-95dc-caaf7efb8c70
timestamp: 2026-01-25 00:10:07.297604
player_id: cpu_1
player_name: Sofia
action: take_discard
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: took 8 from discard
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: 86a55677-9a08-4b65-95dc-caaf7efb8c70
timestamp: 2026-01-25 00:10:07.303667
player_id: cpu_1
player_name: Sofia
action: swap
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: swapped 8 for Q at pos 1
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


