# moves

game_id: ea15e28a-feda-4651-a386-8476022160e5
timestamp: 2026-01-25 00:08:45.117420
player_id: cpu_1
player_name: River
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped 6 for 7 at pos 3
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: 0718370e-af89-44d5-af16-fe37eb73e49b
timestamp: 2026-01-25 00:08:45.136571
player_id: cpu_0
player_name: Marcus
action: take_discard
card_rank: 4
card_suit: hearts
decision_reason: took 4 from discard
hand_json:
[{"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: 0718370e-af89-44d5-af16-fe37eb73e49b
timestamp: 2026-01-25 00:08:45.142706
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: swapped 4 for 8 at pos 1
hand_json:
[{"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: 0718370e-af89-44d5-af16-fe37eb73e49b
timestamp: 2026-01-25 00:08:45.148237
player_id: cpu_1
player_name: Diego
action: take_discard
card_rank: 8
card_suit: spades
decision_reason: took 8 from discard
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": true}]

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


game_id: 0718370e-af89-44d5-af16-fe37eb73e49b
timestamp: 2026-01-25 00:08:45.154029
player_id: cpu_1
player_name: Diego
action: swap
card_rank: 8
card_suit: spades
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: swapped 8 for J at pos 5
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": true}]

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


game_id: 0718370e-af89-44d5-af16-fe37eb73e49b
timestamp: 2026-01-25 00:08:45.159804
player_id: cpu_2
player_name: Sofia
action: draw_deck
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: 0718370e-af89-44d5-af16-fe37eb73e49b
timestamp: 2026-01-25 00:08:45.165727
player_id: cpu_2
player_name: Sofia
action: swap
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped K for 7 at pos 1
hand_json:
[{"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: 0718370e-af89-44d5-af16-fe37eb73e49b
timestamp: 2026-01-25 00:08:45.171645
player_id: cpu_3
player_name: River
action: take_discard
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}]

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


game_id: 0718370e-af89-44d5-af16-fe37eb73e49b
timestamp: 2026-01-25 00:08:45.177781
player_id: cpu_3
player_name: River
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: swapped 7 for 10 at pos 0
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}]

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


game_id: 0718370e-af89-44d5-af16-fe37eb73e49b
timestamp: 2026-01-25 00:08:45.183990
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: 0718370e-af89-44d5-af16-fe37eb73e49b
timestamp: 2026-01-25 00:08:45.190658
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: swapped K for 4 at pos 1
hand_json:
[{"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: 0718370e-af89-44d5-af16-fe37eb73e49b
timestamp: 2026-01-25 00:08:45.197213
player_id: cpu_1
player_name: Diego
action: take_discard
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": true}]

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


game_id: 0718370e-af89-44d5-af16-fe37eb73e49b
timestamp: 2026-01-25 00:08:45.203046
player_id: cpu_1
player_name: Diego
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: swapped 4 for 8 at pos 5
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: 0718370e-af89-44d5-af16-fe37eb73e49b
timestamp: 2026-01-25 00:08:45.209630
player_id: cpu_2
player_name: Sofia
action: draw_deck
card_rank: A
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": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}]

visible_opponents_json:
{"Marcus": [{"rank": "K", "suit": "diamonds"}, {"rank": "A", "suit": "diamonds"}], "Diego": [{"rank": "5", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}], "River": [{"rank": "7", "suit": "diamonds"}, {"rank": "5", "suit": "diamonds"}, {"rank": "7", "suit": "hearts"}]}


game_id: 0718370e-af89-44d5-af16-fe37eb73e49b
timestamp: 2026-01-25 00:08:45.215232
player_id: cpu_2
player_name: Sofia
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "3", "suit": "diamonds"}
decision_reason: swapped A for 3 at pos 5
hand_json:
[{"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}]

visible_opponents_json:
{"Marcus": [{"rank": "K", "suit": "diamonds"}, {"rank": "A", "suit": "diamonds"}], "Diego": [{"rank": "5", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}], "River": [{"rank": "7", "suit": "diamonds"}, {"rank": "5", "suit": "diamonds"}, {"rank": "7", "suit": "hearts"}]}


game_id: 0718370e-af89-44d5-af16-fe37eb73e49b
timestamp: 2026-01-25 00:08:45.220970
player_id: cpu_3
player_name: River
action: take_discard
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}]

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


game_id: 0718370e-af89-44d5-af16-fe37eb73e49b
timestamp: 2026-01-25 00:08:45.226599
player_id: cpu_3
player_name: River
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 3 for 7 at pos 0
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}]

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


game_id: 0718370e-af89-44d5-af16-fe37eb73e49b
timestamp: 2026-01-25 00:08:45.232442
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: 0718370e-af89-44d5-af16-fe37eb73e49b
timestamp: 2026-01-25 00:08:45.244192
player_id: cpu_1
player_name: Diego
action: take_discard
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: 0718370e-af89-44d5-af16-fe37eb73e49b
timestamp: 2026-01-25 00:08:45.250575
player_id: cpu_1
player_name: Diego
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: swapped 6 for Q at pos 3
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: 0718370e-af89-44d5-af16-fe37eb73e49b
timestamp: 2026-01-25 00:08:45.256655
player_id: cpu_2
player_name: Sofia
action: draw_deck
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 0718370e-af89-44d5-af16-fe37eb73e49b
timestamp: 2026-01-25 00:08:45.262491
player_id: cpu_2
player_name: Sofia
action: swap
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "A", "suit": "hearts"}
decision_reason: swapped 2 for A at pos 5
hand_json:
[{"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 0718370e-af89-44d5-af16-fe37eb73e49b
timestamp: 2026-01-25 00:08:45.268842
player_id: cpu_3
player_name: River
action: take_discard
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: took A from discard
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}]

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


game_id: 0718370e-af89-44d5-af16-fe37eb73e49b
timestamp: 2026-01-25 00:08:45.274852
player_id: cpu_3
player_name: River
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped A for 7 at pos 3
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}]

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


game_id: 0718370e-af89-44d5-af16-fe37eb73e49b
timestamp: 2026-01-25 00:08:45.281450
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Diego": [{"rank": "5", "suit": "hearts"}, {"rank": "6", "suit": "diamonds"}, {"rank": "4", "suit": "hearts"}], "Sofia": [{"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "clubs"}], "River": [{"rank": "3", "suit": "diamonds"}, {"rank": "5", "suit": "diamonds"}, {"rank": "A", "suit": "hearts"}]}


game_id: 0718370e-af89-44d5-af16-fe37eb73e49b
timestamp: 2026-01-25 00:08:45.293104
player_id: cpu_1
player_name: Diego
action: draw_deck
card_rank: Q
card_suit: spades
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: 0718370e-af89-44d5-af16-fe37eb73e49b
timestamp: 2026-01-25 00:08:45.298938
player_id: cpu_1
player_name: Diego
action: swap
card_rank: Q
card_suit: spades
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: swapped Q for 9 at pos 1
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: 0718370e-af89-44d5-af16-fe37eb73e49b
timestamp: 2026-01-25 00:08:45.304900
player_id: cpu_2
player_name: Sofia
action: draw_deck
card_rank: 8
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": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 0718370e-af89-44d5-af16-fe37eb73e49b
timestamp: 2026-01-25 00:08:45.316849
player_id: cpu_3
player_name: River
action: draw_deck
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}]

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


game_id: 0718370e-af89-44d5-af16-fe37eb73e49b
timestamp: 2026-01-25 00:08:45.322915
player_id: cpu_3
player_name: River
action: swap
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped 2 for 5 at pos 1
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}]

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


game_id: 0718370e-af89-44d5-af16-fe37eb73e49b
timestamp: 2026-01-25 00:08:45.328963
player_id: cpu_0
player_name: Marcus
action: take_discard
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: took 5 from discard
visible_opponents_json:
{"Diego": [{"rank": "5", "suit": "hearts"}, {"rank": "Q", "suit": "spades"}, {"rank": "6", "suit": "diamonds"}, {"rank": "4", "suit": "hearts"}], "Sofia": [{"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "clubs"}], "River": [{"rank": "3", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}, {"rank": "A", "suit": "hearts"}]}


game_id: 0718370e-af89-44d5-af16-fe37eb73e49b
timestamp: 2026-01-25 00:08:45.335047
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: swapped 5 for Q at pos 2
hand_json:
[{"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: 0718370e-af89-44d5-af16-fe37eb73e49b
timestamp: 2026-01-25 00:08:45.341255
player_id: cpu_1
player_name: Diego
action: take_discard
card_rank: Q
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: took Q from discard
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: 0718370e-af89-44d5-af16-fe37eb73e49b
timestamp: 2026-01-25 00:08:45.347464
player_id: cpu_1
player_name: Diego
action: swap
card_rank: Q
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: swapped Q for J at pos 4
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: 0718370e-af89-44d5-af16-fe37eb73e49b
timestamp: 2026-01-25 00:08:45.353977
player_id: cpu_2
player_name: Sofia
action: draw_deck
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Marcus": [{"rank": "K", "suit": "diamonds"}, {"rank": "5", "suit": "diamonds"}, {"rank": "A", "suit": "diamonds"}], "Diego": [{"rank": "5", "suit": "hearts"}, {"rank": "Q", "suit": "spades"}, {"rank": "6", "suit": "diamonds"}, {"rank": "Q", "suit": "diamonds"}, {"rank": "4", "suit": "hearts"}], "River": [{"rank": "3", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}, {"rank": "A", "suit": "hearts"}]}


game_id: 0718370e-af89-44d5-af16-fe37eb73e49b
timestamp: 2026-01-25 00:08:45.359709
player_id: cpu_2
player_name: Sofia
action: swap
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: swapped 2 for Q at pos 0
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 0718370e-af89-44d5-af16-fe37eb73e49b
timestamp: 2026-01-25 00:08:45.365430
player_id: cpu_3
player_name: River
action: draw_deck
card_rank: J
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}]

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


game_id: 0718370e-af89-44d5-af16-fe37eb73e49b
timestamp: 2026-01-25 00:08:45.376645
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: 0718370e-af89-44d5-af16-fe37eb73e49b
timestamp: 2026-01-25 00:08:45.382434
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped K for 5 at pos 2
hand_json:
[{"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: 0718370e-af89-44d5-af16-fe37eb73e49b
timestamp: 2026-01-25 00:08:45.388192
player_id: cpu_1
player_name: Diego
action: take_discard
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: 0718370e-af89-44d5-af16-fe37eb73e49b
timestamp: 2026-01-25 00:08:45.394154
player_id: cpu_1
player_name: Diego
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: swapped 5 for 9 at pos 2
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: 0718370e-af89-44d5-af16-fe37eb73e49b
timestamp: 2026-01-25 00:08:45.400265
player_id: cpu_2
player_name: Sofia
action: draw_deck
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 0718370e-af89-44d5-af16-fe37eb73e49b
timestamp: 2026-01-25 00:08:45.411997
player_id: cpu_3
player_name: River
action: take_discard
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: took 7 from discard
visible_opponents_json:
{"Marcus": [{"rank": "K", "suit": "diamonds"}, {"rank": "K", "suit": "hearts"}, {"rank": "A", "suit": "diamonds"}], "Diego": [{"rank": "5", "suit": "hearts"}, {"rank": "Q", "suit": "spades"}, {"rank": "5", "suit": "diamonds"}, {"rank": "6", "suit": "diamonds"}, {"rank": "Q", "suit": "diamonds"}, {"rank": "4", "suit": "hearts"}], "Sofia": [{"rank": "2", "suit": "spades"}, {"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "clubs"}]}


game_id: 0718370e-af89-44d5-af16-fe37eb73e49b
timestamp: 2026-01-25 00:08:45.418667
player_id: cpu_3
player_name: River
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: swapped 7 for 4 at pos 2
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}]

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


game_id: 0718370e-af89-44d5-af16-fe37eb73e49b
timestamp: 2026-01-25 00:08:45.424648
player_id: cpu_0
player_name: Marcus
action: take_discard
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: 0718370e-af89-44d5-af16-fe37eb73e49b
timestamp: 2026-01-25 00:08:45.430822
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: swapped 4 for 8 at pos 0
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: 6bba633c-b444-4413-9cff-2da2baa8db21
timestamp: 2026-01-25 00:08:45.447727
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}]

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


game_id: 6bba633c-b444-4413-9cff-2da2baa8db21
timestamp: 2026-01-25 00:08:45.453115
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: swapped 4 for J at pos 3
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}]

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


game_id: 6bba633c-b444-4413-9cff-2da2baa8db21
timestamp: 2026-01-25 00:08:45.458621
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: J
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: took J from discard
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}]

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


game_id: 6bba633c-b444-4413-9cff-2da2baa8db21
timestamp: 2026-01-25 00:08:45.464296
player_id: cpu_1
player_name: Sage
action: swap
card_rank: J
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: swapped J for 10 at pos 5
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": true}]

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


game_id: 6bba633c-b444-4413-9cff-2da2baa8db21
timestamp: 2026-01-25 00:08:45.470252
player_id: cpu_2
player_name: Marcus
action: draw_deck
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": true}]

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


game_id: 6bba633c-b444-4413-9cff-2da2baa8db21
timestamp: 2026-01-25 00:08:45.476076
player_id: cpu_2
player_name: Marcus
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped 6 for 5 at pos 0
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": true}]

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


game_id: 6bba633c-b444-4413-9cff-2da2baa8db21
timestamp: 2026-01-25 00:08:45.482366
player_id: cpu_3
player_name: River
action: take_discard
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: 6bba633c-b444-4413-9cff-2da2baa8db21
timestamp: 2026-01-25 00:08:45.488204
player_id: cpu_3
player_name: River
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: swapped 5 for 9 at pos 2
hand_json:
[{"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: 6bba633c-b444-4413-9cff-2da2baa8db21
timestamp: 2026-01-25 00:08:45.494702
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: Q
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}]

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


game_id: 6bba633c-b444-4413-9cff-2da2baa8db21
timestamp: 2026-01-25 00:08:45.506842
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": true}]

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


game_id: 6bba633c-b444-4413-9cff-2da2baa8db21
timestamp: 2026-01-25 00:08:45.515075
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: swapped 4 for J at pos 2
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": true}]

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


game_id: 6bba633c-b444-4413-9cff-2da2baa8db21
timestamp: 2026-01-25 00:08:45.520430
player_id: cpu_2
player_name: Marcus
action: draw_deck
card_rank: A
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": "K", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": true}]

visible_opponents_json:
{"Sofia": [{"rank": "7", "suit": "clubs"}, {"rank": "4", "suit": "clubs"}], "Sage": [{"rank": "4", "suit": "spades"}, {"rank": "5", "suit": "spades"}, {"rank": "J", "suit": "hearts"}], "River": [{"rank": "8", "suit": "hearts"}, {"rank": "5", "suit": "clubs"}, {"rank": "5", "suit": "hearts"}]}


game_id: 6bba633c-b444-4413-9cff-2da2baa8db21
timestamp: 2026-01-25 00:08:45.525860
player_id: cpu_2
player_name: Marcus
action: swap
card_rank: A
card_suit: spades
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: swapped A for 9 at pos 5
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}]

visible_opponents_json:
{"Sofia": [{"rank": "7", "suit": "clubs"}, {"rank": "4", "suit": "clubs"}], "Sage": [{"rank": "4", "suit": "spades"}, {"rank": "5", "suit": "spades"}, {"rank": "J", "suit": "hearts"}], "River": [{"rank": "8", "suit": "hearts"}, {"rank": "5", "suit": "clubs"}, {"rank": "5", "suit": "hearts"}]}


game_id: 6bba633c-b444-4413-9cff-2da2baa8db21
timestamp: 2026-01-25 00:08:45.531427
player_id: cpu_3
player_name: River
action: draw_deck
card_rank: 9
card_suit: spades
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: 6bba633c-b444-4413-9cff-2da2baa8db21
timestamp: 2026-01-25 00:08:45.543171
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Sage": [{"rank": "4", "suit": "spades"}, {"rank": "5", "suit": "spades"}, {"rank": "J", "suit": "hearts"}], "Marcus": [{"rank": "6", "suit": "clubs"}, {"rank": "K", "suit": "spades"}, {"rank": "A", "suit": "spades"}], "River": [{"rank": "8", "suit": "hearts"}, {"rank": "5", "suit": "clubs"}, {"rank": "5", "suit": "hearts"}]}


game_id: 6bba633c-b444-4413-9cff-2da2baa8db21
timestamp: 2026-01-25 00:08:45.549624
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped K for 7 at pos 2
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}]

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


game_id: 6bba633c-b444-4413-9cff-2da2baa8db21
timestamp: 2026-01-25 00:08:45.556571
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": true}]

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


game_id: 6bba633c-b444-4413-9cff-2da2baa8db21
timestamp: 2026-01-25 00:08:45.562763
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: swapped 7 for J at pos 5
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}]

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


game_id: 6bba633c-b444-4413-9cff-2da2baa8db21
timestamp: 2026-01-25 00:08:45.568984
player_id: cpu_2
player_name: Marcus
action: draw_deck
card_rank: 8
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}]

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


game_id: 6bba633c-b444-4413-9cff-2da2baa8db21
timestamp: 2026-01-25 00:08:45.580067
player_id: cpu_3
player_name: River
action: take_discard
card_rank: 8
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: took 8 from discard
visible_opponents_json:
{"Sofia": [{"rank": "K", "suit": "clubs"}, {"rank": "4", "suit": "clubs"}], "Sage": [{"rank": "4", "suit": "spades"}, {"rank": "5", "suit": "spades"}, {"rank": "7", "suit": "clubs"}], "Marcus": [{"rank": "6", "suit": "clubs"}, {"rank": "K", "suit": "spades"}, {"rank": "A", "suit": "spades"}]}


game_id: 6bba633c-b444-4413-9cff-2da2baa8db21
timestamp: 2026-01-25 00:08:45.585572
player_id: cpu_3
player_name: River
action: swap
card_rank: 8
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: swapped 8 for J at pos 3
hand_json:
[{"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: 6bba633c-b444-4413-9cff-2da2baa8db21
timestamp: 2026-01-25 00:08:45.593198
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}]

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


game_id: 6bba633c-b444-4413-9cff-2da2baa8db21
timestamp: 2026-01-25 00:08:45.605110
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}]

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


game_id: 6bba633c-b444-4413-9cff-2da2baa8db21
timestamp: 2026-01-25 00:08:45.611106
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "2", "suit": "spades"}
decision_reason: swapped 7 for 2 at pos 1
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}]

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


game_id: 6bba633c-b444-4413-9cff-2da2baa8db21
timestamp: 2026-01-25 00:08:45.616726
player_id: cpu_2
player_name: Marcus
action: take_discard
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: took 2 from discard
visible_opponents_json:
{"Sofia": [{"rank": "K", "suit": "clubs"}, {"rank": "4", "suit": "clubs"}], "Sage": [{"rank": "7", "suit": "spades"}, {"rank": "4", "suit": "spades"}, {"rank": "5", "suit": "spades"}, {"rank": "7", "suit": "clubs"}], "River": [{"rank": "8", "suit": "hearts"}, {"rank": "5", "suit": "clubs"}, {"rank": "8", "suit": "clubs"}, {"rank": "5", "suit": "hearts"}]}


game_id: 6bba633c-b444-4413-9cff-2da2baa8db21
timestamp: 2026-01-25 00:08:45.623151
player_id: cpu_2
player_name: Marcus
action: swap
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 2 for 6 at pos 0
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}]

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


game_id: 6bba633c-b444-4413-9cff-2da2baa8db21
timestamp: 2026-01-25 00:08:45.628913
player_id: cpu_3
player_name: River
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: 6bba633c-b444-4413-9cff-2da2baa8db21
timestamp: 2026-01-25 00:08:45.634748
player_id: cpu_3
player_name: River
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: swapped 6 for 8 at pos 0
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: 6bba633c-b444-4413-9cff-2da2baa8db21
timestamp: 2026-01-25 00:08:45.640637
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Sage": [{"rank": "7", "suit": "spades"}, {"rank": "4", "suit": "spades"}, {"rank": "5", "suit": "spades"}, {"rank": "7", "suit": "clubs"}], "Marcus": [{"rank": "2", "suit": "spades"}, {"rank": "K", "suit": "spades"}, {"rank": "A", "suit": "spades"}], "River": [{"rank": "6", "suit": "clubs"}, {"rank": "5", "suit": "clubs"}, {"rank": "8", "suit": "clubs"}, {"rank": "5", "suit": "hearts"}]}


game_id: 6bba633c-b444-4413-9cff-2da2baa8db21
timestamp: 2026-01-25 00:08:45.646123
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: swapped K for 4 at pos 3
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}]

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


game_id: 6bba633c-b444-4413-9cff-2da2baa8db21
timestamp: 2026-01-25 00:08:45.651369
player_id: cpu_1
player_name: Sage
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": "3", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}]

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


game_id: 6bba633c-b444-4413-9cff-2da2baa8db21
timestamp: 2026-01-25 00:08:45.656862
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped 4 for 7 at pos 1
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}]

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


game_id: 6bba633c-b444-4413-9cff-2da2baa8db21
timestamp: 2026-01-25 00:08:45.662970
player_id: cpu_2
player_name: Marcus
action: take_discard
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}]

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


game_id: 6bba633c-b444-4413-9cff-2da2baa8db21
timestamp: 2026-01-25 00:08:45.669224
player_id: cpu_2
player_name: Marcus
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "2", "suit": "hearts"}
decision_reason: swapped 7 for 2 at pos 2
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}]

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


game_id: 6bba633c-b444-4413-9cff-2da2baa8db21
timestamp: 2026-01-25 00:08:45.675309
player_id: cpu_3
player_name: River
action: take_discard
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: took 2 from discard
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: 6bba633c-b444-4413-9cff-2da2baa8db21
timestamp: 2026-01-25 00:08:45.681314
player_id: cpu_3
player_name: River
action: swap
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: swapped 2 for 8 at pos 3
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: 6bba633c-b444-4413-9cff-2da2baa8db21
timestamp: 2026-01-25 00:08:45.687004
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}]

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


game_id: 6bba633c-b444-4413-9cff-2da2baa8db21
timestamp: 2026-01-25 00:08:45.698236
player_id: cpu_1
player_name: Sage
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": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}]

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


game_id: 6bba633c-b444-4413-9cff-2da2baa8db21
timestamp: 2026-01-25 00:08:45.703837
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped 7 for 6 at pos 4
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}]

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


game_id: 6bba633c-b444-4413-9cff-2da2baa8db21
timestamp: 2026-01-25 00:08:45.709384
player_id: cpu_2
player_name: Marcus
action: take_discard
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}]

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


game_id: 6bba633c-b444-4413-9cff-2da2baa8db21
timestamp: 2026-01-25 00:08:45.715351
player_id: cpu_2
player_name: Marcus
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped 6 for 7 at pos 2
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}]

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


game_id: 6bba633c-b444-4413-9cff-2da2baa8db21
timestamp: 2026-01-25 00:08:45.720881
player_id: cpu_3
player_name: River
action: take_discard
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: 6bba633c-b444-4413-9cff-2da2baa8db21
timestamp: 2026-01-25 00:08:45.726595
player_id: cpu_3
player_name: River
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: swapped 7 for Q at pos 4
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: 6bba633c-b444-4413-9cff-2da2baa8db21
timestamp: 2026-01-25 00:08:45.732503
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Sage": [{"rank": "4", "suit": "clubs"}, {"rank": "4", "suit": "spades"}, {"rank": "5", "suit": "spades"}, {"rank": "7", "suit": "hearts"}, {"rank": "7", "suit": "clubs"}], "Marcus": [{"rank": "2", "suit": "spades"}, {"rank": "K", "suit": "spades"}, {"rank": "6", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}], "River": [{"rank": "6", "suit": "clubs"}, {"rank": "5", "suit": "clubs"}, {"rank": "2", "suit": "hearts"}, {"rank": "7", "suit": "spades"}, {"rank": "5", "suit": "hearts"}]}


game_id: 6bba633c-b444-4413-9cff-2da2baa8db21
timestamp: 2026-01-25 00:08:45.738389
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: swapped A for J at pos 5
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: 6bba633c-b444-4413-9cff-2da2baa8db21
timestamp: 2026-01-25 00:08:45.744592
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}]

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


game_id: 6bba633c-b444-4413-9cff-2da2baa8db21
timestamp: 2026-01-25 00:08:45.750488
player_id: cpu_1
player_name: Sage
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": "3", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}]

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


game_id: 6bba633c-b444-4413-9cff-2da2baa8db21
timestamp: 2026-01-25 00:08:45.756169
player_id: cpu_2
player_name: Marcus
action: take_discard
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}]

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


game_id: 6bba633c-b444-4413-9cff-2da2baa8db21
timestamp: 2026-01-25 00:08:45.762264
player_id: cpu_2
player_name: Marcus
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: swapped 7 for 8 at pos 3
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}]

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


game_id: 6bba633c-b444-4413-9cff-2da2baa8db21
timestamp: 2026-01-25 00:08:45.768060
player_id: cpu_3
player_name: River
action: draw_deck
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: 6bba633c-b444-4413-9cff-2da2baa8db21
timestamp: 2026-01-25 00:08:45.774549
player_id: cpu_3
player_name: River
action: swap
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped 2 for 7 at pos 4
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: 6bba633c-b444-4413-9cff-2da2baa8db21
timestamp: 2026-01-25 00:08:45.780512
player_id: cpu_0
player_name: Sofia
action: take_discard
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: 6bba633c-b444-4413-9cff-2da2baa8db21
timestamp: 2026-01-25 00:08:45.786737
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped 7 for 6 at pos 4
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: 6bba633c-b444-4413-9cff-2da2baa8db21
timestamp: 2026-01-25 00:08:45.792418
player_id: cpu_1
player_name: Sage
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": "4", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}]

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


game_id: 6bba633c-b444-4413-9cff-2da2baa8db21
timestamp: 2026-01-25 00:08:45.797944
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped 6 for 7 at pos 5
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}]

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


game_id: 6bba633c-b444-4413-9cff-2da2baa8db21
timestamp: 2026-01-25 00:08:45.803437
player_id: cpu_2
player_name: Marcus
action: take_discard
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}]

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


game_id: 6bba633c-b444-4413-9cff-2da2baa8db21
timestamp: 2026-01-25 00:08:45.808972
player_id: cpu_2
player_name: Marcus
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "3", "suit": "diamonds"}
decision_reason: swapped 7 for 3 at pos 4
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}]

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


game_id: 6bba633c-b444-4413-9cff-2da2baa8db21
timestamp: 2026-01-25 00:08:45.815039
player_id: cpu_3
player_name: River
action: take_discard
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: 6bba633c-b444-4413-9cff-2da2baa8db21
timestamp: 2026-01-25 00:08:45.821001
player_id: cpu_3
player_name: River
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 3 for 6 at pos 0
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: 6bba633c-b444-4413-9cff-2da2baa8db21
timestamp: 2026-01-25 00:08:45.827188
player_id: cpu_0
player_name: Sofia
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: 6bba633c-b444-4413-9cff-2da2baa8db21
timestamp: 2026-01-25 00:08:45.833391
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "A", "suit": "hearts"}
decision_reason: swapped 6 for A at pos 1
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: 6bba633c-b444-4413-9cff-2da2baa8db21
timestamp: 2026-01-25 00:08:45.839729
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: took A from discard
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}]

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


game_id: 6bba633c-b444-4413-9cff-2da2baa8db21
timestamp: 2026-01-25 00:08:45.845668
player_id: cpu_1
player_name: Sage
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped A for 6 at pos 4
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}]

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


game_id: df6e9165-0547-4977-974f-08a2c4c7113c
timestamp: 2026-01-25 00:08:45.863312
player_id: cpu_0
player_name: Sofia
action: take_discard
card_rank: 10
card_suit: spades
decision_reason: took 10 from discard
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": true}]

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


game_id: df6e9165-0547-4977-974f-08a2c4c7113c
timestamp: 2026-01-25 00:08:45.868910
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: 10
card_suit: spades
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: swapped 10 for J at pos 2
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": true}]

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


game_id: df6e9165-0547-4977-974f-08a2c4c7113c
timestamp: 2026-01-25 00:08:45.874737
player_id: cpu_1
player_name: Diego
action: draw_deck
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: df6e9165-0547-4977-974f-08a2c4c7113c
timestamp: 2026-01-25 00:08:45.880221
player_id: cpu_1
player_name: Diego
action: swap
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "A", "suit": "hearts"}
decision_reason: swapped 3 for A at pos 4
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: df6e9165-0547-4977-974f-08a2c4c7113c
timestamp: 2026-01-25 00:08:45.885820
player_id: cpu_2
player_name: Sage
action: take_discard
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: took A from discard
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}]

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


game_id: df6e9165-0547-4977-974f-08a2c4c7113c
timestamp: 2026-01-25 00:08:45.891781
player_id: cpu_2
player_name: Sage
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: swapped A for Q at pos 1
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}]

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


game_id: df6e9165-0547-4977-974f-08a2c4c7113c
timestamp: 2026-01-25 00:08:45.900752
player_id: cpu_3
player_name: Priya
action: draw_deck
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}]

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


game_id: df6e9165-0547-4977-974f-08a2c4c7113c
timestamp: 2026-01-25 00:08:45.906534
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped 5 for 6 at pos 1
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}]

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


game_id: df6e9165-0547-4977-974f-08a2c4c7113c
timestamp: 2026-01-25 00:08:45.912296
player_id: cpu_0
player_name: Sofia
action: take_discard
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": true}]

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


game_id: df6e9165-0547-4977-974f-08a2c4c7113c
timestamp: 2026-01-25 00:08:45.918131
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: swapped 6 for 10 at pos 2
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": true}]

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


game_id: df6e9165-0547-4977-974f-08a2c4c7113c
timestamp: 2026-01-25 00:08:45.923922
player_id: cpu_1
player_name: Diego
action: draw_deck
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: df6e9165-0547-4977-974f-08a2c4c7113c
timestamp: 2026-01-25 00:08:45.929930
player_id: cpu_1
player_name: Diego
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped 6 for 5 at pos 1
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: df6e9165-0547-4977-974f-08a2c4c7113c
timestamp: 2026-01-25 00:08:45.936387
player_id: cpu_2
player_name: Sage
action: take_discard
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}]

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


game_id: df6e9165-0547-4977-974f-08a2c4c7113c
timestamp: 2026-01-25 00:08:45.942058
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "2", "suit": "clubs"}
decision_reason: swapped 5 for 2 at pos 0
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}]

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


game_id: df6e9165-0547-4977-974f-08a2c4c7113c
timestamp: 2026-01-25 00:08:45.947838
player_id: cpu_3
player_name: Priya
action: take_discard
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: took 2 from discard
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}]

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


game_id: df6e9165-0547-4977-974f-08a2c4c7113c
timestamp: 2026-01-25 00:08:45.953407
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped 2 for 5 at pos 1
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}]

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


game_id: df6e9165-0547-4977-974f-08a2c4c7113c
timestamp: 2026-01-25 00:08:45.959168
player_id: cpu_0
player_name: Sofia
action: take_discard
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": true}]

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


game_id: df6e9165-0547-4977-974f-08a2c4c7113c
timestamp: 2026-01-25 00:08:45.965139
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: swapped 5 for 10 at pos 5
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: df6e9165-0547-4977-974f-08a2c4c7113c
timestamp: 2026-01-25 00:08:45.971332
player_id: cpu_1
player_name: Diego
action: draw_deck
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: df6e9165-0547-4977-974f-08a2c4c7113c
timestamp: 2026-01-25 00:08:45.977213
player_id: cpu_1
player_name: Diego
action: swap
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped 2 for 6 at pos 1
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: df6e9165-0547-4977-974f-08a2c4c7113c
timestamp: 2026-01-25 00:08:45.983208
player_id: cpu_2
player_name: Sage
action: take_discard
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}]

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


game_id: df6e9165-0547-4977-974f-08a2c4c7113c
timestamp: 2026-01-25 00:08:45.989650
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: swapped 6 for 8 at pos 4
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}]

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


game_id: df6e9165-0547-4977-974f-08a2c4c7113c
timestamp: 2026-01-25 00:08:45.995758
player_id: cpu_3
player_name: Priya
action: draw_deck
card_rank: J
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}]

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


game_id: df6e9165-0547-4977-974f-08a2c4c7113c
timestamp: 2026-01-25 00:08:46.007225
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: df6e9165-0547-4977-974f-08a2c4c7113c
timestamp: 2026-01-25 00:08:46.018536
player_id: cpu_1
player_name: Diego
action: take_discard
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: df6e9165-0547-4977-974f-08a2c4c7113c
timestamp: 2026-01-25 00:08:46.023729
player_id: cpu_1
player_name: Diego
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: swapped 7 for 8 at pos 2
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: df6e9165-0547-4977-974f-08a2c4c7113c
timestamp: 2026-01-25 00:08:46.029449
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: Q
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}]

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


game_id: df6e9165-0547-4977-974f-08a2c4c7113c
timestamp: 2026-01-25 00:08:46.041062
player_id: cpu_3
player_name: Priya
action: draw_deck
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Sofia": [{"rank": "A", "suit": "clubs"}, {"rank": "6", "suit": "diamonds"}, {"rank": "5", "suit": "spades"}], "Diego": [{"rank": "4", "suit": "clubs"}, {"rank": "2", "suit": "spades"}, {"rank": "7", "suit": "clubs"}, {"rank": "3", "suit": "hearts"}, {"rank": "3", "suit": "spades"}], "Sage": [{"rank": "5", "suit": "diamonds"}, {"rank": "A", "suit": "hearts"}, {"rank": "K", "suit": "spades"}, {"rank": "6", "suit": "spades"}]}


game_id: df6e9165-0547-4977-974f-08a2c4c7113c
timestamp: 2026-01-25 00:08:46.047103
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped 4 for 5 at pos 2
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}]

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


game_id: df6e9165-0547-4977-974f-08a2c4c7113c
timestamp: 2026-01-25 00:08:46.052894
player_id: cpu_0
player_name: Sofia
action: take_discard
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: took 5 from discard
visible_opponents_json:
{"Diego": [{"rank": "4", "suit": "clubs"}, {"rank": "2", "suit": "spades"}, {"rank": "7", "suit": "clubs"}, {"rank": "3", "suit": "hearts"}, {"rank": "3", "suit": "spades"}], "Sage": [{"rank": "5", "suit": "diamonds"}, {"rank": "A", "suit": "hearts"}, {"rank": "K", "suit": "spades"}, {"rank": "6", "suit": "spades"}], "Priya": [{"rank": "2", "suit": "clubs"}, {"rank": "4", "suit": "hearts"}, {"rank": "5", "suit": "clubs"}]}


game_id: df6e9165-0547-4977-974f-08a2c4c7113c
timestamp: 2026-01-25 00:08:46.059207
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: swapped 5 for 10 at pos 1
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: df6e9165-0547-4977-974f-08a2c4c7113c
timestamp: 2026-01-25 00:08:46.065205
player_id: cpu_1
player_name: Diego
action: draw_deck
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: df6e9165-0547-4977-974f-08a2c4c7113c
timestamp: 2026-01-25 00:08:46.071647
player_id: cpu_1
player_name: Diego
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "K", "suit": "hearts"}
decision_reason: swapped 7 for K at pos 3
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: df6e9165-0547-4977-974f-08a2c4c7113c
timestamp: 2026-01-25 00:08:46.077700
player_id: cpu_2
player_name: Sage
action: take_discard
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: took K from discard
visible_opponents_json:
{"Sofia": [{"rank": "A", "suit": "clubs"}, {"rank": "5", "suit": "hearts"}, {"rank": "6", "suit": "diamonds"}, {"rank": "5", "suit": "spades"}], "Diego": [{"rank": "4", "suit": "clubs"}, {"rank": "2", "suit": "spades"}, {"rank": "7", "suit": "clubs"}, {"rank": "7", "suit": "hearts"}, {"rank": "3", "suit": "hearts"}, {"rank": "3", "suit": "spades"}], "Priya": [{"rank": "2", "suit": "clubs"}, {"rank": "4", "suit": "hearts"}, {"rank": "5", "suit": "clubs"}]}


game_id: df6e9165-0547-4977-974f-08a2c4c7113c
timestamp: 2026-01-25 00:08:46.083504
player_id: cpu_2
player_name: Sage
action: swap
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped K for 6 at pos 4
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}]

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


game_id: df6e9165-0547-4977-974f-08a2c4c7113c
timestamp: 2026-01-25 00:08:46.088760
player_id: cpu_3
player_name: Priya
action: take_discard
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}]

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


game_id: df6e9165-0547-4977-974f-08a2c4c7113c
timestamp: 2026-01-25 00:08:46.094341
player_id: cpu_3
player_name: Priya
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "3", "suit": "diamonds"}
decision_reason: swapped 6 for 3 at pos 0
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}]

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


game_id: df6e9165-0547-4977-974f-08a2c4c7113c
timestamp: 2026-01-25 00:08:46.099907
player_id: cpu_0
player_name: Sofia
action: take_discard
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: df6e9165-0547-4977-974f-08a2c4c7113c
timestamp: 2026-01-25 00:08:46.105841
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped 3 for 6 at pos 2
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: db5bb25d-9eda-41f7-87f5-4f94bacaa1f3
timestamp: 2026-01-25 00:08:46.122880
player_id: cpu_0
player_name: Diego
action: take_discard
card_rank: 8
card_suit: spades
decision_reason: took 8 from discard
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}]

visible_opponents_json:
{"Sofia": [{"rank": "3", "suit": "diamonds"}, {"rank": "7", "suit": "diamonds"}], "Kenji": [{"rank": "9", "suit": "clubs"}, {"rank": "7", "suit": "clubs"}], "Marcus": [{"rank": "7", "suit": "spades"}, {"rank": "5", "suit": "diamonds"}]}


game_id: db5bb25d-9eda-41f7-87f5-4f94bacaa1f3
timestamp: 2026-01-25 00:08:46.128679
player_id: cpu_0
player_name: Diego
action: swap
card_rank: 8
card_suit: spades
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: swapped 8 for J at pos 0
hand_json:
[{"rank": "8", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}]

visible_opponents_json:
{"Sofia": [{"rank": "3", "suit": "diamonds"}, {"rank": "7", "suit": "diamonds"}], "Kenji": [{"rank": "9", "suit": "clubs"}, {"rank": "7", "suit": "clubs"}], "Marcus": [{"rank": "7", "suit": "spades"}, {"rank": "5", "suit": "diamonds"}]}


game_id: db5bb25d-9eda-41f7-87f5-4f94bacaa1f3
timestamp: 2026-01-25 00:08:46.135197
player_id: cpu_1
player_name: Sofia
action: draw_deck
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}]

visible_opponents_json:
{"Diego": [{"rank": "8", "suit": "spades"}, {"rank": "J", "suit": "spades"}], "Kenji": [{"rank": "9", "suit": "clubs"}, {"rank": "7", "suit": "clubs"}], "Marcus": [{"rank": "7", "suit": "spades"}, {"rank": "5", "suit": "diamonds"}]}


game_id: db5bb25d-9eda-41f7-87f5-4f94bacaa1f3
timestamp: 2026-01-25 00:08:46.144494
player_id: cpu_1
player_name: Sofia
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 5 for 7 at pos 5
hand_json:
[{"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}]

visible_opponents_json:
{"Diego": [{"rank": "8", "suit": "spades"}, {"rank": "J", "suit": "spades"}], "Kenji": [{"rank": "9", "suit": "clubs"}, {"rank": "7", "suit": "clubs"}], "Marcus": [{"rank": "7", "suit": "spades"}, {"rank": "5", "suit": "diamonds"}]}


game_id: db5bb25d-9eda-41f7-87f5-4f94bacaa1f3
timestamp: 2026-01-25 00:08:46.150018
player_id: cpu_2
player_name: Kenji
action: take_discard
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Diego": [{"rank": "8", "suit": "spades"}, {"rank": "J", "suit": "spades"}], "Sofia": [{"rank": "3", "suit": "diamonds"}, {"rank": "5", "suit": "spades"}], "Marcus": [{"rank": "7", "suit": "spades"}, {"rank": "5", "suit": "diamonds"}]}


game_id: db5bb25d-9eda-41f7-87f5-4f94bacaa1f3
timestamp: 2026-01-25 00:08:46.155415
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "2", "suit": "diamonds"}
decision_reason: swapped 7 for 2 at pos 0
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Diego": [{"rank": "8", "suit": "spades"}, {"rank": "J", "suit": "spades"}], "Sofia": [{"rank": "3", "suit": "diamonds"}, {"rank": "5", "suit": "spades"}], "Marcus": [{"rank": "7", "suit": "spades"}, {"rank": "5", "suit": "diamonds"}]}


game_id: db5bb25d-9eda-41f7-87f5-4f94bacaa1f3
timestamp: 2026-01-25 00:08:46.160892
player_id: cpu_3
player_name: Marcus
action: take_discard
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: took 2 from discard
hand_json:
[{"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}]

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


game_id: db5bb25d-9eda-41f7-87f5-4f94bacaa1f3
timestamp: 2026-01-25 00:08:46.166617
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped 2 for 7 at pos 1
hand_json:
[{"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}]

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


game_id: db5bb25d-9eda-41f7-87f5-4f94bacaa1f3
timestamp: 2026-01-25 00:08:46.172261
player_id: cpu_0
player_name: Diego
action: take_discard
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "8", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}]

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


game_id: db5bb25d-9eda-41f7-87f5-4f94bacaa1f3
timestamp: 2026-01-25 00:08:46.181803
player_id: cpu_0
player_name: Diego
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: swapped 7 for J at pos 4
hand_json:
[{"rank": "8", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}]

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


game_id: db5bb25d-9eda-41f7-87f5-4f94bacaa1f3
timestamp: 2026-01-25 00:08:46.187497
player_id: cpu_1
player_name: Sofia
action: draw_deck
card_rank: Q
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: db5bb25d-9eda-41f7-87f5-4f94bacaa1f3
timestamp: 2026-01-25 00:08:46.199269
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: J
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}]

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


game_id: db5bb25d-9eda-41f7-87f5-4f94bacaa1f3
timestamp: 2026-01-25 00:08:46.210689
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 8
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}]

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


game_id: db5bb25d-9eda-41f7-87f5-4f94bacaa1f3
timestamp: 2026-01-25 00:08:46.227862
player_id: cpu_0
player_name: Diego
action: swap
card_rank: 8
card_suit: diamonds
discard_top_json: {"rank": "3", "suit": "spades"}
decision_reason: swapped 8 for 3 at pos 2
hand_json:
[{"rank": "8", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}]


game_id: db5bb25d-9eda-41f7-87f5-4f94bacaa1f3
timestamp: 2026-01-25 00:08:46.233686
player_id: cpu_1
player_name: Sofia
action: take_discard
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: took 3 from discard
visible_opponents_json:
{"Diego": [{"rank": "8", "suit": "spades"}, {"rank": "8", "suit": "diamonds"}, {"rank": "7", "suit": "spades"}], "Kenji": [{"rank": "7", "suit": "diamonds"}, {"rank": "9", "suit": "clubs"}, {"rank": "7", "suit": "clubs"}], "Marcus": [{"rank": "2", "suit": "diamonds"}, {"rank": "5", "suit": "diamonds"}]}


game_id: db5bb25d-9eda-41f7-87f5-4f94bacaa1f3
timestamp: 2026-01-25 00:08:46.239347
player_id: cpu_1
player_name: Sofia
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: swapped 3 for 8 at pos 4
hand_json:
[{"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: db5bb25d-9eda-41f7-87f5-4f94bacaa1f3
timestamp: 2026-01-25 00:08:46.244953
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Diego": [{"rank": "8", "suit": "spades"}, {"rank": "8", "suit": "diamonds"}, {"rank": "7", "suit": "spades"}], "Sofia": [{"rank": "3", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}, {"rank": "5", "suit": "spades"}], "Marcus": [{"rank": "2", "suit": "diamonds"}, {"rank": "5", "suit": "diamonds"}]}


game_id: db5bb25d-9eda-41f7-87f5-4f94bacaa1f3
timestamp: 2026-01-25 00:08:46.250735
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: swapped 6 for 9 at pos 1
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}]

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


game_id: db5bb25d-9eda-41f7-87f5-4f94bacaa1f3
timestamp: 2026-01-25 00:08:46.256275
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Diego": [{"rank": "8", "suit": "spades"}, {"rank": "8", "suit": "diamonds"}, {"rank": "7", "suit": "spades"}], "Sofia": [{"rank": "3", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}, {"rank": "5", "suit": "spades"}], "Kenji": [{"rank": "7", "suit": "diamonds"}, {"rank": "6", "suit": "spades"}, {"rank": "7", "suit": "clubs"}]}


game_id: db5bb25d-9eda-41f7-87f5-4f94bacaa1f3
timestamp: 2026-01-25 00:08:46.261867
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped K for 5 at pos 3
hand_json:
[{"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}]

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


game_id: db5bb25d-9eda-41f7-87f5-4f94bacaa1f3
timestamp: 2026-01-25 00:08:46.267748
player_id: cpu_0
player_name: Diego
action: take_discard
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "8", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}]

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


game_id: db5bb25d-9eda-41f7-87f5-4f94bacaa1f3
timestamp: 2026-01-25 00:08:46.273500
player_id: cpu_0
player_name: Diego
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: swapped 5 for 8 at pos 0
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}]

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


game_id: db5bb25d-9eda-41f7-87f5-4f94bacaa1f3
timestamp: 2026-01-25 00:08:46.279535
player_id: cpu_1
player_name: Sofia
action: draw_deck
card_rank: 10
card_suit: spades
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: db5bb25d-9eda-41f7-87f5-4f94bacaa1f3
timestamp: 2026-01-25 00:08:46.292768
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}]

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


game_id: db5bb25d-9eda-41f7-87f5-4f94bacaa1f3
timestamp: 2026-01-25 00:08:46.298649
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: swapped 7 for 9 at pos 5
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}]

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


game_id: db5bb25d-9eda-41f7-87f5-4f94bacaa1f3
timestamp: 2026-01-25 00:08:46.304259
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 10
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}]

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


game_id: db5bb25d-9eda-41f7-87f5-4f94bacaa1f3
timestamp: 2026-01-25 00:08:46.315572
player_id: cpu_0
player_name: Diego
action: draw_deck
card_rank: K
card_suit: spades
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}]

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


game_id: db5bb25d-9eda-41f7-87f5-4f94bacaa1f3
timestamp: 2026-01-25 00:08:46.321689
player_id: cpu_0
player_name: Diego
action: swap
card_rank: K
card_suit: spades
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: swapped K for 8 at pos 2
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}]

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


game_id: db5bb25d-9eda-41f7-87f5-4f94bacaa1f3
timestamp: 2026-01-25 00:08:46.327561
player_id: cpu_1
player_name: Sofia
action: draw_deck
card_rank: 9
card_suit: spades
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Diego": [{"rank": "5", "suit": "diamonds"}, {"rank": "K", "suit": "spades"}, {"rank": "7", "suit": "spades"}], "Kenji": [{"rank": "7", "suit": "diamonds"}, {"rank": "6", "suit": "spades"}, {"rank": "7", "suit": "clubs"}, {"rank": "7", "suit": "hearts"}], "Marcus": [{"rank": "2", "suit": "diamonds"}, {"rank": "K", "suit": "hearts"}]}


game_id: db5bb25d-9eda-41f7-87f5-4f94bacaa1f3
timestamp: 2026-01-25 00:08:46.339467
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: 8
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}]

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


game_id: db5bb25d-9eda-41f7-87f5-4f94bacaa1f3
timestamp: 2026-01-25 00:08:46.345688
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 8
card_suit: clubs
discard_top_json: {"rank": "A", "suit": "diamonds"}
decision_reason: swapped 8 for A at pos 2
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}]

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


game_id: db5bb25d-9eda-41f7-87f5-4f94bacaa1f3
timestamp: 2026-01-25 00:08:46.351879
player_id: cpu_3
player_name: Marcus
action: take_discard
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: took A from discard
visible_opponents_json:
{"Diego": [{"rank": "5", "suit": "diamonds"}, {"rank": "K", "suit": "spades"}, {"rank": "7", "suit": "spades"}], "Sofia": [{"rank": "3", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}, {"rank": "5", "suit": "spades"}], "Kenji": [{"rank": "7", "suit": "diamonds"}, {"rank": "6", "suit": "spades"}, {"rank": "8", "suit": "clubs"}, {"rank": "7", "suit": "clubs"}, {"rank": "7", "suit": "hearts"}]}


game_id: db5bb25d-9eda-41f7-87f5-4f94bacaa1f3
timestamp: 2026-01-25 00:08:46.358071
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: swapped A for 10 at pos 0
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}]

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


game_id: db5bb25d-9eda-41f7-87f5-4f94bacaa1f3
timestamp: 2026-01-25 00:08:46.363924
player_id: cpu_0
player_name: Diego
action: draw_deck
card_rank: J
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}]

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


game_id: db5bb25d-9eda-41f7-87f5-4f94bacaa1f3
timestamp: 2026-01-25 00:08:46.375054
player_id: cpu_1
player_name: Sofia
action: draw_deck
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Diego": [{"rank": "5", "suit": "diamonds"}, {"rank": "K", "suit": "spades"}, {"rank": "7", "suit": "spades"}], "Kenji": [{"rank": "7", "suit": "diamonds"}, {"rank": "6", "suit": "spades"}, {"rank": "8", "suit": "clubs"}, {"rank": "7", "suit": "clubs"}, {"rank": "7", "suit": "hearts"}], "Marcus": [{"rank": "A", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}, {"rank": "K", "suit": "hearts"}]}


game_id: db5bb25d-9eda-41f7-87f5-4f94bacaa1f3
timestamp: 2026-01-25 00:08:46.380224
player_id: cpu_1
player_name: Sofia
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "A", "suit": "spades"}
decision_reason: swapped 6 for A at pos 2
hand_json:
[{"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: db5bb25d-9eda-41f7-87f5-4f94bacaa1f3
timestamp: 2026-01-25 00:08:46.386028
player_id: cpu_2
player_name: Kenji
action: take_discard
card_rank: A
card_suit: spades
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: took A from discard
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}]

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


game_id: db5bb25d-9eda-41f7-87f5-4f94bacaa1f3
timestamp: 2026-01-25 00:08:46.391753
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: A
card_suit: spades
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: swapped A for 8 at pos 2
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}]

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


game_id: db5bb25d-9eda-41f7-87f5-4f94bacaa1f3
timestamp: 2026-01-25 00:08:46.397465
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 10
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}]

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


game_id: db5bb25d-9eda-41f7-87f5-4f94bacaa1f3
timestamp: 2026-01-25 00:08:46.408680
player_id: cpu_0
player_name: Diego
action: draw_deck
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Sofia": [{"rank": "3", "suit": "diamonds"}, {"rank": "6", "suit": "clubs"}, {"rank": "3", "suit": "spades"}, {"rank": "5", "suit": "spades"}], "Kenji": [{"rank": "7", "suit": "diamonds"}, {"rank": "6", "suit": "spades"}, {"rank": "A", "suit": "spades"}, {"rank": "7", "suit": "clubs"}, {"rank": "7", "suit": "hearts"}], "Marcus": [{"rank": "A", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}, {"rank": "K", "suit": "hearts"}]}


game_id: db5bb25d-9eda-41f7-87f5-4f94bacaa1f3
timestamp: 2026-01-25 00:08:46.414790
player_id: cpu_0
player_name: Diego
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped 3 for 7 at pos 4
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}]

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


game_id: db5bb25d-9eda-41f7-87f5-4f94bacaa1f3
timestamp: 2026-01-25 00:08:46.420474
player_id: cpu_1
player_name: Sofia
action: take_discard
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: db5bb25d-9eda-41f7-87f5-4f94bacaa1f3
timestamp: 2026-01-25 00:08:46.426726
player_id: cpu_1
player_name: Sofia
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "2", "suit": "clubs"}
decision_reason: swapped 7 for 2 at pos 3
hand_json:
[{"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: db5bb25d-9eda-41f7-87f5-4f94bacaa1f3
timestamp: 2026-01-25 00:08:46.432121
player_id: cpu_2
player_name: Kenji
action: take_discard
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: took 2 from discard
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}]

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


game_id: db5bb25d-9eda-41f7-87f5-4f94bacaa1f3
timestamp: 2026-01-25 00:08:46.437603
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 2 for 7 at pos 0
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}]

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


game_id: db5bb25d-9eda-41f7-87f5-4f94bacaa1f3
timestamp: 2026-01-25 00:08:46.443035
player_id: cpu_3
player_name: Marcus
action: take_discard
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: took 7 from discard
visible_opponents_json:
{"Diego": [{"rank": "5", "suit": "diamonds"}, {"rank": "K", "suit": "spades"}, {"rank": "3", "suit": "clubs"}], "Sofia": [{"rank": "3", "suit": "diamonds"}, {"rank": "6", "suit": "clubs"}, {"rank": "7", "suit": "spades"}, {"rank": "3", "suit": "spades"}, {"rank": "5", "suit": "spades"}], "Kenji": [{"rank": "2", "suit": "clubs"}, {"rank": "6", "suit": "spades"}, {"rank": "A", "suit": "spades"}, {"rank": "7", "suit": "clubs"}, {"rank": "7", "suit": "hearts"}]}


game_id: db5bb25d-9eda-41f7-87f5-4f94bacaa1f3
timestamp: 2026-01-25 00:08:46.448485
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "A", "suit": "hearts"}
decision_reason: swapped 7 for A at pos 2
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}]

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


game_id: db5bb25d-9eda-41f7-87f5-4f94bacaa1f3
timestamp: 2026-01-25 00:08:46.453708
player_id: cpu_0
player_name: Diego
action: take_discard
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: took A from discard
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}]

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


game_id: db5bb25d-9eda-41f7-87f5-4f94bacaa1f3
timestamp: 2026-01-25 00:08:46.459234
player_id: cpu_0
player_name: Diego
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped A for 5 at pos 0
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}]

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


game_id: db5bb25d-9eda-41f7-87f5-4f94bacaa1f3
timestamp: 2026-01-25 00:08:46.465061
player_id: cpu_1
player_name: Sofia
action: take_discard
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: db5bb25d-9eda-41f7-87f5-4f94bacaa1f3
timestamp: 2026-01-25 00:08:46.470730
player_id: cpu_1
player_name: Sofia
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped 5 for 7 at pos 3
hand_json:
[{"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: db5bb25d-9eda-41f7-87f5-4f94bacaa1f3
timestamp: 2026-01-25 00:08:46.476953
player_id: cpu_2
player_name: Kenji
action: take_discard
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}]

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


game_id: db5bb25d-9eda-41f7-87f5-4f94bacaa1f3
timestamp: 2026-01-25 00:08:46.482665
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "3", "suit": "hearts"}
decision_reason: swapped 7 for 3 at pos 4
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}]

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


game_id: db5bb25d-9eda-41f7-87f5-4f94bacaa1f3
timestamp: 2026-01-25 00:08:46.488200
player_id: cpu_3
player_name: Marcus
action: take_discard
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}]

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


game_id: db5bb25d-9eda-41f7-87f5-4f94bacaa1f3
timestamp: 2026-01-25 00:08:46.493805
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 3 for 7 at pos 2
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}]

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


game_id: db5bb25d-9eda-41f7-87f5-4f94bacaa1f3
timestamp: 2026-01-25 00:08:46.499379
player_id: cpu_0
player_name: Diego
action: take_discard
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}]

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


game_id: db5bb25d-9eda-41f7-87f5-4f94bacaa1f3
timestamp: 2026-01-25 00:08:46.504890
player_id: cpu_0
player_name: Diego
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: swapped 7 for Q at pos 3
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}]

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


game_id: db5bb25d-9eda-41f7-87f5-4f94bacaa1f3
timestamp: 2026-01-25 00:08:46.510637
player_id: cpu_1
player_name: Sofia
action: draw_deck
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: db5bb25d-9eda-41f7-87f5-4f94bacaa1f3
timestamp: 2026-01-25 00:08:46.516566
player_id: cpu_1
player_name: Sofia
action: swap
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped K for 6 at pos 2
hand_json:
[{"rank": "Q", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: 69c2acdf-8533-472c-9332-5c4a84c07134
timestamp: 2026-01-25 00:08:46.533187
player_id: cpu_0
player_name: Kenji
action: take_discard
card_rank: A
card_suit: clubs
decision_reason: took A from discard
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}]

visible_opponents_json:
{"Sage": [{"rank": "9", "suit": "spades"}, {"rank": "A", "suit": "spades"}], "Marcus": [{"rank": "J", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}], "Diego": [{"rank": "10", "suit": "spades"}, {"rank": "4", "suit": "diamonds"}]}


game_id: 69c2acdf-8533-472c-9332-5c4a84c07134
timestamp: 2026-01-25 00:08:46.539022
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped A for 6 at pos 4
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}]

visible_opponents_json:
{"Sage": [{"rank": "9", "suit": "spades"}, {"rank": "A", "suit": "spades"}], "Marcus": [{"rank": "J", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}], "Diego": [{"rank": "10", "suit": "spades"}, {"rank": "4", "suit": "diamonds"}]}


game_id: 69c2acdf-8533-472c-9332-5c4a84c07134
timestamp: 2026-01-25 00:08:46.548284
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: 6
card_suit: clubs
decision_reason: took 6 from discard
hand_json:
[{"rank": "9", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}]

visible_opponents_json:
{"Kenji": [{"rank": "5", "suit": "clubs"}, {"rank": "A", "suit": "clubs"}], "Marcus": [{"rank": "J", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}], "Diego": [{"rank": "10", "suit": "spades"}, {"rank": "4", "suit": "diamonds"}]}


game_id: 69c2acdf-8533-472c-9332-5c4a84c07134
timestamp: 2026-01-25 00:08:46.554147
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: swapped 6 for 9 at pos 0
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}]

visible_opponents_json:
{"Kenji": [{"rank": "5", "suit": "clubs"}, {"rank": "A", "suit": "clubs"}], "Marcus": [{"rank": "J", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}], "Diego": [{"rank": "10", "suit": "spades"}, {"rank": "4", "suit": "diamonds"}]}


game_id: 69c2acdf-8533-472c-9332-5c4a84c07134
timestamp: 2026-01-25 00:08:46.559913
player_id: cpu_2
player_name: Marcus
action: draw_deck
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}]

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


game_id: 69c2acdf-8533-472c-9332-5c4a84c07134
timestamp: 2026-01-25 00:08:46.565632
player_id: cpu_2
player_name: Marcus
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: swapped 5 for J at pos 0
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}]

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


game_id: 69c2acdf-8533-472c-9332-5c4a84c07134
timestamp: 2026-01-25 00:08:46.571191
player_id: cpu_3
player_name: Diego
action: draw_deck
card_rank: Q
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "10", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}]

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


game_id: 69c2acdf-8533-472c-9332-5c4a84c07134
timestamp: 2026-01-25 00:08:46.576992
player_id: cpu_3
player_name: Diego
action: swap
card_rank: Q
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped Q for 7 at pos 2
hand_json:
[{"rank": "10", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}]

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


game_id: 69c2acdf-8533-472c-9332-5c4a84c07134
timestamp: 2026-01-25 00:08:46.582510
player_id: cpu_0
player_name: Kenji
action: draw_deck
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}]

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


game_id: 69c2acdf-8533-472c-9332-5c4a84c07134
timestamp: 2026-01-25 00:08:46.591822
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped 4 for 5 at pos 2
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}]

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


game_id: 69c2acdf-8533-472c-9332-5c4a84c07134
timestamp: 2026-01-25 00:08:46.597733
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}]

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


game_id: 69c2acdf-8533-472c-9332-5c4a84c07134
timestamp: 2026-01-25 00:08:46.607246
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 5 for 6 at pos 0
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}]

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


game_id: 69c2acdf-8533-472c-9332-5c4a84c07134
timestamp: 2026-01-25 00:08:46.613102
player_id: cpu_2
player_name: Marcus
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Kenji": [{"rank": "4", "suit": "spades"}, {"rank": "A", "suit": "clubs"}], "Sage": [{"rank": "5", "suit": "clubs"}, {"rank": "A", "suit": "spades"}], "Diego": [{"rank": "10", "suit": "spades"}, {"rank": "Q", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}]}


game_id: 69c2acdf-8533-472c-9332-5c4a84c07134
timestamp: 2026-01-25 00:08:46.619094
player_id: cpu_2
player_name: Marcus
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: swapped 6 for 4 at pos 1
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Kenji": [{"rank": "4", "suit": "spades"}, {"rank": "A", "suit": "clubs"}], "Sage": [{"rank": "5", "suit": "clubs"}, {"rank": "A", "suit": "spades"}], "Diego": [{"rank": "10", "suit": "spades"}, {"rank": "Q", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}]}


game_id: 69c2acdf-8533-472c-9332-5c4a84c07134
timestamp: 2026-01-25 00:08:46.624959
player_id: cpu_3
player_name: Diego
action: draw_deck
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "10", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}]

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


game_id: 69c2acdf-8533-472c-9332-5c4a84c07134
timestamp: 2026-01-25 00:08:46.630669
player_id: cpu_3
player_name: Diego
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: swapped 7 for 10 at pos 0
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}]

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


game_id: 69c2acdf-8533-472c-9332-5c4a84c07134
timestamp: 2026-01-25 00:08:46.636260
player_id: cpu_0
player_name: Kenji
action: draw_deck
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}]

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


game_id: 69c2acdf-8533-472c-9332-5c4a84c07134
timestamp: 2026-01-25 00:08:46.642101
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "4", "suit": "spades"}
decision_reason: swapped 3 for 4 at pos 2
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}]

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


game_id: 69c2acdf-8533-472c-9332-5c4a84c07134
timestamp: 2026-01-25 00:08:46.647631
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}]

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


game_id: 69c2acdf-8533-472c-9332-5c4a84c07134
timestamp: 2026-01-25 00:08:46.653323
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped 4 for 5 at pos 0
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}]

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


game_id: 69c2acdf-8533-472c-9332-5c4a84c07134
timestamp: 2026-01-25 00:08:46.659024
player_id: cpu_2
player_name: Marcus
action: take_discard
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}]

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


game_id: 69c2acdf-8533-472c-9332-5c4a84c07134
timestamp: 2026-01-25 00:08:46.665065
player_id: cpu_2
player_name: Marcus
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: swapped 5 for 8 at pos 3
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}]

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


game_id: 69c2acdf-8533-472c-9332-5c4a84c07134
timestamp: 2026-01-25 00:08:46.673597
player_id: cpu_3
player_name: Diego
action: take_discard
card_rank: 8
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: took 8 from discard
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}]

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


game_id: 69c2acdf-8533-472c-9332-5c4a84c07134
timestamp: 2026-01-25 00:08:46.679356
player_id: cpu_3
player_name: Diego
action: swap
card_rank: 8
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: swapped 8 for Q at pos 2
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}]

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


game_id: 69c2acdf-8533-472c-9332-5c4a84c07134
timestamp: 2026-01-25 00:08:46.685103
player_id: cpu_0
player_name: Kenji
action: draw_deck
card_rank: J
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}]

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


game_id: 69c2acdf-8533-472c-9332-5c4a84c07134
timestamp: 2026-01-25 00:08:46.691250
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: J
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: swapped J for 8 at pos 1
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}]

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


game_id: 69c2acdf-8533-472c-9332-5c4a84c07134
timestamp: 2026-01-25 00:08:46.697183
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: Q
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}]

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


game_id: 69c2acdf-8533-472c-9332-5c4a84c07134
timestamp: 2026-01-25 00:08:46.710086
player_id: cpu_2
player_name: Marcus
action: draw_deck
card_rank: Q
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}]

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


game_id: 69c2acdf-8533-472c-9332-5c4a84c07134
timestamp: 2026-01-25 00:08:46.721734
player_id: cpu_3
player_name: Diego
action: draw_deck
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}]

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


game_id: 69c2acdf-8533-472c-9332-5c4a84c07134
timestamp: 2026-01-25 00:08:46.727425
player_id: cpu_3
player_name: Diego
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: swapped 7 for Q at pos 5
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}]

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


game_id: 69c2acdf-8533-472c-9332-5c4a84c07134
timestamp: 2026-01-25 00:08:46.733066
player_id: cpu_0
player_name: Kenji
action: draw_deck
card_rank: 8
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}]

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


game_id: 69c2acdf-8533-472c-9332-5c4a84c07134
timestamp: 2026-01-25 00:08:46.738889
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 8
card_suit: spades
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: swapped 8 for J at pos 1
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}]

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


game_id: 69c2acdf-8533-472c-9332-5c4a84c07134
timestamp: 2026-01-25 00:08:46.744747
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Kenji": [{"rank": "8", "suit": "spades"}, {"rank": "3", "suit": "diamonds"}, {"rank": "A", "suit": "clubs"}], "Marcus": [{"rank": "5", "suit": "hearts"}, {"rank": "6", "suit": "clubs"}, {"rank": "5", "suit": "clubs"}, {"rank": "3", "suit": "spades"}], "Diego": [{"rank": "7", "suit": "clubs"}, {"rank": "8", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}, {"rank": "7", "suit": "spades"}]}


game_id: 69c2acdf-8533-472c-9332-5c4a84c07134
timestamp: 2026-01-25 00:08:46.750377
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "4", "suit": "spades"}
decision_reason: swapped 2 for 4 at pos 0
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}]

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


game_id: 69c2acdf-8533-472c-9332-5c4a84c07134
timestamp: 2026-01-25 00:08:46.756744
player_id: cpu_2
player_name: Marcus
action: take_discard
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: took 4 from discard
visible_opponents_json:
{"Kenji": [{"rank": "8", "suit": "spades"}, {"rank": "3", "suit": "diamonds"}, {"rank": "A", "suit": "clubs"}], "Sage": [{"rank": "2", "suit": "hearts"}, {"rank": "A", "suit": "spades"}], "Diego": [{"rank": "7", "suit": "clubs"}, {"rank": "8", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}, {"rank": "7", "suit": "spades"}]}


game_id: 69c2acdf-8533-472c-9332-5c4a84c07134
timestamp: 2026-01-25 00:08:46.763179
player_id: cpu_2
player_name: Marcus
action: swap
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 4 for 6 at pos 1
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}]

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


game_id: 69c2acdf-8533-472c-9332-5c4a84c07134
timestamp: 2026-01-25 00:08:46.769141
player_id: cpu_3
player_name: Diego
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": "7", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}]

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


game_id: 69c2acdf-8533-472c-9332-5c4a84c07134
timestamp: 2026-01-25 00:08:46.774753
player_id: cpu_3
player_name: Diego
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: swapped 6 for 8 at pos 2
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}]

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


game_id: 69c2acdf-8533-472c-9332-5c4a84c07134
timestamp: 2026-01-25 00:08:46.780238
player_id: cpu_0
player_name: Kenji
action: draw_deck
card_rank: 10
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}]

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


game_id: 69c2acdf-8533-472c-9332-5c4a84c07134
timestamp: 2026-01-25 00:08:46.786088
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 10
card_suit: diamonds
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: swapped 10 for 4 at pos 5
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": true}]

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


game_id: 69c2acdf-8533-472c-9332-5c4a84c07134
timestamp: 2026-01-25 00:08:46.791848
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}]

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


game_id: 69c2acdf-8533-472c-9332-5c4a84c07134
timestamp: 2026-01-25 00:08:46.797554
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "2", "suit": "diamonds"}
decision_reason: swapped 4 for 2 at pos 3
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}]

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


game_id: 69c2acdf-8533-472c-9332-5c4a84c07134
timestamp: 2026-01-25 00:08:46.803033
player_id: cpu_2
player_name: Marcus
action: take_discard
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: took 2 from discard
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}]

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


game_id: 69c2acdf-8533-472c-9332-5c4a84c07134
timestamp: 2026-01-25 00:08:46.809111
player_id: cpu_2
player_name: Marcus
action: swap
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped 2 for 5 at pos 0
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}]

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


game_id: 69c2acdf-8533-472c-9332-5c4a84c07134
timestamp: 2026-01-25 00:08:46.814795
player_id: cpu_3
player_name: Diego
action: take_discard
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}]

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


game_id: 69c2acdf-8533-472c-9332-5c4a84c07134
timestamp: 2026-01-25 00:08:46.820736
player_id: cpu_3
player_name: Diego
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: swapped 5 for 10 at pos 3
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}]

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


game_id: 69c2acdf-8533-472c-9332-5c4a84c07134
timestamp: 2026-01-25 00:08:46.826517
player_id: cpu_0
player_name: Kenji
action: draw_deck
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": true}]

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


game_id: 69c2acdf-8533-472c-9332-5c4a84c07134
timestamp: 2026-01-25 00:08:46.832235
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: swapped 6 for 10 at pos 5
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}]

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


game_id: 69c2acdf-8533-472c-9332-5c4a84c07134
timestamp: 2026-01-25 00:08:46.838119
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: 9
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}]

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


game_id: 69c2acdf-8533-472c-9332-5c4a84c07134
timestamp: 2026-01-25 00:08:46.849949
player_id: cpu_2
player_name: Marcus
action: draw_deck
card_rank: 9
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}]

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


game_id: 69c2acdf-8533-472c-9332-5c4a84c07134
timestamp: 2026-01-25 00:08:46.861048
player_id: cpu_3
player_name: Diego
action: draw_deck
card_rank: 10
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}]

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


game_id: 69c2acdf-8533-472c-9332-5c4a84c07134
timestamp: 2026-01-25 00:08:46.878664
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: swapped 3 for 8 at pos 1
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}]


game_id: 69c2acdf-8533-472c-9332-5c4a84c07134
timestamp: 2026-01-25 00:08:46.884383
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Kenji": [{"rank": "3", "suit": "clubs"}, {"rank": "3", "suit": "diamonds"}, {"rank": "A", "suit": "clubs"}, {"rank": "6", "suit": "diamonds"}], "Marcus": [{"rank": "2", "suit": "diamonds"}, {"rank": "4", "suit": "spades"}, {"rank": "5", "suit": "clubs"}, {"rank": "3", "suit": "spades"}], "Diego": [{"rank": "7", "suit": "clubs"}, {"rank": "6", "suit": "clubs"}, {"rank": "5", "suit": "hearts"}, {"rank": "4", "suit": "diamonds"}, {"rank": "7", "suit": "spades"}]}


game_id: 69c2acdf-8533-472c-9332-5c4a84c07134
timestamp: 2026-01-25 00:08:46.890477
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "K", "suit": "spades"}
decision_reason: swapped 5 for K at pos 1
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}]

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


game_id: 69c2acdf-8533-472c-9332-5c4a84c07134
timestamp: 2026-01-25 00:08:46.896319
player_id: cpu_2
player_name: Marcus
action: draw_deck
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "K", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Kenji": [{"rank": "3", "suit": "clubs"}, {"rank": "3", "suit": "diamonds"}, {"rank": "A", "suit": "clubs"}, {"rank": "6", "suit": "diamonds"}], "Sage": [{"rank": "2", "suit": "hearts"}, {"rank": "5", "suit": "diamonds"}, {"rank": "4", "suit": "clubs"}, {"rank": "A", "suit": "spades"}], "Diego": [{"rank": "7", "suit": "clubs"}, {"rank": "6", "suit": "clubs"}, {"rank": "5", "suit": "hearts"}, {"rank": "4", "suit": "diamonds"}, {"rank": "7", "suit": "spades"}]}


game_id: 69c2acdf-8533-472c-9332-5c4a84c07134
timestamp: 2026-01-25 00:08:46.902097
player_id: cpu_2
player_name: Marcus
action: swap
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped 2 for 5 at pos 3
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}]

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


game_id: 69c2acdf-8533-472c-9332-5c4a84c07134
timestamp: 2026-01-25 00:08:46.908018
player_id: cpu_3
player_name: Diego
action: take_discard
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "K", "suit": "spades"}
decision_reason: took 5 from discard
visible_opponents_json:
{"Kenji": [{"rank": "3", "suit": "clubs"}, {"rank": "3", "suit": "diamonds"}, {"rank": "A", "suit": "clubs"}, {"rank": "6", "suit": "diamonds"}], "Sage": [{"rank": "2", "suit": "hearts"}, {"rank": "5", "suit": "diamonds"}, {"rank": "4", "suit": "clubs"}, {"rank": "A", "suit": "spades"}], "Marcus": [{"rank": "2", "suit": "diamonds"}, {"rank": "4", "suit": "spades"}, {"rank": "2", "suit": "clubs"}, {"rank": "3", "suit": "spades"}]}


game_id: 69c2acdf-8533-472c-9332-5c4a84c07134
timestamp: 2026-01-25 00:08:46.913811
player_id: cpu_3
player_name: Diego
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped 5 for 7 at pos 0
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}]

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


game_id: 69c2acdf-8533-472c-9332-5c4a84c07134
timestamp: 2026-01-25 00:08:46.919180
player_id: cpu_0
player_name: Kenji
action: take_discard
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "K", "suit": "spades"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}]

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


game_id: 69c2acdf-8533-472c-9332-5c4a84c07134
timestamp: 2026-01-25 00:08:46.924905
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: swapped 7 for 8 at pos 3
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}]

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


game_id: 69c2acdf-8533-472c-9332-5c4a84c07134
timestamp: 2026-01-25 00:08:46.930587
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}]

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


game_id: 69c2acdf-8533-472c-9332-5c4a84c07134
timestamp: 2026-01-25 00:08:46.936249
player_id: cpu_1
player_name: Sage
action: swap
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped K for 5 at pos 1
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}]

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


game_id: 69c2acdf-8533-472c-9332-5c4a84c07134
timestamp: 2026-01-25 00:08:46.941890
player_id: cpu_2
player_name: Marcus
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": "2", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}]

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


game_id: 69c2acdf-8533-472c-9332-5c4a84c07134
timestamp: 2026-01-25 00:08:46.947847
player_id: cpu_2
player_name: Marcus
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "A", "suit": "diamonds"}
decision_reason: swapped 5 for A at pos 5
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}]

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


game_id: 69c2acdf-8533-472c-9332-5c4a84c07134
timestamp: 2026-01-25 00:08:46.954159
player_id: cpu_3
player_name: Diego
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": "5", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}]

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


game_id: 69c2acdf-8533-472c-9332-5c4a84c07134
timestamp: 2026-01-25 00:08:46.961073
player_id: cpu_3
player_name: Diego
action: swap
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped A for 7 at pos 5
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: 69c2acdf-8533-472c-9332-5c4a84c07134
timestamp: 2026-01-25 00:08:46.966873
player_id: cpu_0
player_name: Kenji
action: take_discard
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}]

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


game_id: 69c2acdf-8533-472c-9332-5c4a84c07134
timestamp: 2026-01-25 00:08:46.972484
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped 7 for 6 at pos 0
hand_json:
[{"rank": "7", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}]

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


game_id: 69c2acdf-8533-472c-9332-5c4a84c07134
timestamp: 2026-01-25 00:08:46.977857
player_id: cpu_1
player_name: Sage
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": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}]

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


game_id: 69c2acdf-8533-472c-9332-5c4a84c07134
timestamp: 2026-01-25 00:08:46.983989
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: swapped 6 for J at pos 2
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}]

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


game_id: 69c2acdf-8533-472c-9332-5c4a84c07134
timestamp: 2026-01-25 00:08:46.989706
player_id: cpu_2
player_name: Marcus
action: draw_deck
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}]

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


game_id: 69c2acdf-8533-472c-9332-5c4a84c07134
timestamp: 2026-01-25 00:08:46.995139
player_id: cpu_2
player_name: Marcus
action: swap
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped 2 for 5 at pos 5
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}]

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


game_id: 69c2acdf-8533-472c-9332-5c4a84c07134
timestamp: 2026-01-25 00:08:47.000939
player_id: cpu_3
player_name: Diego
action: take_discard
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: 69c2acdf-8533-472c-9332-5c4a84c07134
timestamp: 2026-01-25 00:08:47.006442
player_id: cpu_3
player_name: Diego
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 5 for 6 at pos 2
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: 6f61cfe0-6d2b-4b20-834a-ece8089a201d
timestamp: 2026-01-25 00:08:47.023073
player_id: cpu_0
player_name: Diego
action: draw_deck
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}]

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


game_id: 6f61cfe0-6d2b-4b20-834a-ece8089a201d
timestamp: 2026-01-25 00:08:47.029073
player_id: cpu_0
player_name: Diego
action: swap
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped K for 6 at pos 2
hand_json:
[{"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}]

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


game_id: 6f61cfe0-6d2b-4b20-834a-ece8089a201d
timestamp: 2026-01-25 00:08:47.034985
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "J", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": true}]

visible_opponents_json:
{"Diego": [{"rank": "K", "suit": "clubs"}, {"rank": "4", "suit": "clubs"}], "River": [{"rank": "Q", "suit": "hearts"}, {"rank": "10", "suit": "clubs"}], "Kenji": [{"rank": "A", "suit": "hearts"}, {"rank": "5", "suit": "spades"}]}


game_id: 6f61cfe0-6d2b-4b20-834a-ece8089a201d
timestamp: 2026-01-25 00:08:47.041145
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: swapped 6 for J at pos 0
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": true}]

visible_opponents_json:
{"Diego": [{"rank": "K", "suit": "clubs"}, {"rank": "4", "suit": "clubs"}], "River": [{"rank": "Q", "suit": "hearts"}, {"rank": "10", "suit": "clubs"}], "Kenji": [{"rank": "A", "suit": "hearts"}, {"rank": "5", "suit": "spades"}]}


game_id: 6f61cfe0-6d2b-4b20-834a-ece8089a201d
timestamp: 2026-01-25 00:08:47.047189
player_id: cpu_2
player_name: River
action: draw_deck
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: 6f61cfe0-6d2b-4b20-834a-ece8089a201d
timestamp: 2026-01-25 00:08:47.055127
player_id: cpu_2
player_name: River
action: swap
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: swapped 4 for Q at pos 1
hand_json:
[{"rank": "6", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: 6f61cfe0-6d2b-4b20-834a-ece8089a201d
timestamp: 2026-01-25 00:08:47.060802
player_id: cpu_3
player_name: Kenji
action: draw_deck
card_rank: 8
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}]

visible_opponents_json:
{"Diego": [{"rank": "K", "suit": "clubs"}, {"rank": "4", "suit": "clubs"}], "Sage": [{"rank": "6", "suit": "diamonds"}, {"rank": "J", "suit": "diamonds"}], "River": [{"rank": "4", "suit": "spades"}, {"rank": "10", "suit": "clubs"}]}


game_id: 6f61cfe0-6d2b-4b20-834a-ece8089a201d
timestamp: 2026-01-25 00:08:47.066534
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 8
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: swapped 8 for Q at pos 2
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}]

visible_opponents_json:
{"Diego": [{"rank": "K", "suit": "clubs"}, {"rank": "4", "suit": "clubs"}], "Sage": [{"rank": "6", "suit": "diamonds"}, {"rank": "J", "suit": "diamonds"}], "River": [{"rank": "4", "suit": "spades"}, {"rank": "10", "suit": "clubs"}]}


game_id: 6f61cfe0-6d2b-4b20-834a-ece8089a201d
timestamp: 2026-01-25 00:08:47.072139
player_id: cpu_0
player_name: Diego
action: draw_deck
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}]

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


game_id: 6f61cfe0-6d2b-4b20-834a-ece8089a201d
timestamp: 2026-01-25 00:08:47.077941
player_id: cpu_0
player_name: Diego
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped 5 for 5 at pos 4
hand_json:
[{"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}]

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


game_id: 6f61cfe0-6d2b-4b20-834a-ece8089a201d
timestamp: 2026-01-25 00:08:47.084071
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": true}]

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


game_id: 6f61cfe0-6d2b-4b20-834a-ece8089a201d
timestamp: 2026-01-25 00:08:47.089853
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: swapped 5 for J at pos 5
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: 6f61cfe0-6d2b-4b20-834a-ece8089a201d
timestamp: 2026-01-25 00:08:47.096094
player_id: cpu_2
player_name: River
action: draw_deck
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: 6f61cfe0-6d2b-4b20-834a-ece8089a201d
timestamp: 2026-01-25 00:08:47.102132
player_id: cpu_2
player_name: River
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: swapped 7 for 10 at pos 3
hand_json:
[{"rank": "6", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: 6f61cfe0-6d2b-4b20-834a-ece8089a201d
timestamp: 2026-01-25 00:08:47.108386
player_id: cpu_3
player_name: Kenji
action: draw_deck
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: 6f61cfe0-6d2b-4b20-834a-ece8089a201d
timestamp: 2026-01-25 00:08:47.113795
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: swapped 3 for 8 at pos 2
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: 6f61cfe0-6d2b-4b20-834a-ece8089a201d
timestamp: 2026-01-25 00:08:47.121278
player_id: cpu_0
player_name: Diego
action: draw_deck
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}]

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


game_id: 6f61cfe0-6d2b-4b20-834a-ece8089a201d
timestamp: 2026-01-25 00:08:47.132943
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: 6f61cfe0-6d2b-4b20-834a-ece8089a201d
timestamp: 2026-01-25 00:08:47.138158
player_id: cpu_1
player_name: Sage
action: swap
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped K for 6 at pos 0
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: 6f61cfe0-6d2b-4b20-834a-ece8089a201d
timestamp: 2026-01-25 00:08:47.143976
player_id: cpu_2
player_name: River
action: take_discard
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "6", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: 6f61cfe0-6d2b-4b20-834a-ece8089a201d
timestamp: 2026-01-25 00:08:47.149403
player_id: cpu_2
player_name: River
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped 6 for 7 at pos 3
hand_json:
[{"rank": "6", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: 6f61cfe0-6d2b-4b20-834a-ece8089a201d
timestamp: 2026-01-25 00:08:47.154861
player_id: cpu_3
player_name: Kenji
action: draw_deck
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: 6f61cfe0-6d2b-4b20-834a-ece8089a201d
timestamp: 2026-01-25 00:08:47.160999
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped 2 for 5 at pos 5
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: 6f61cfe0-6d2b-4b20-834a-ece8089a201d
timestamp: 2026-01-25 00:08:47.167166
player_id: cpu_0
player_name: Diego
action: take_discard
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: took 5 from discard
visible_opponents_json:
{"Sage": [{"rank": "K", "suit": "diamonds"}, {"rank": "5", "suit": "hearts"}], "River": [{"rank": "4", "suit": "spades"}, {"rank": "6", "suit": "diamonds"}], "Kenji": [{"rank": "A", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}]}


game_id: 6f61cfe0-6d2b-4b20-834a-ece8089a201d
timestamp: 2026-01-25 00:08:47.173332
player_id: cpu_0
player_name: Diego
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "3", "suit": "hearts"}
decision_reason: swapped 5 for 3 at pos 1
hand_json:
[{"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}]

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


game_id: 6f61cfe0-6d2b-4b20-834a-ece8089a201d
timestamp: 2026-01-25 00:08:47.178975
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: 6f61cfe0-6d2b-4b20-834a-ece8089a201d
timestamp: 2026-01-25 00:08:47.185030
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped 3 for 5 at pos 5
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: 6f61cfe0-6d2b-4b20-834a-ece8089a201d
timestamp: 2026-01-25 00:08:47.190802
player_id: cpu_2
player_name: River
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": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: 6f61cfe0-6d2b-4b20-834a-ece8089a201d
timestamp: 2026-01-25 00:08:47.196364
player_id: cpu_2
player_name: River
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped 5 for 6 at pos 3
hand_json:
[{"rank": "6", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: 6f61cfe0-6d2b-4b20-834a-ece8089a201d
timestamp: 2026-01-25 00:08:47.202104
player_id: cpu_3
player_name: Kenji
action: take_discard
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: 6f61cfe0-6d2b-4b20-834a-ece8089a201d
timestamp: 2026-01-25 00:08:47.207797
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: swapped 6 for Q at pos 4
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: 6f61cfe0-6d2b-4b20-834a-ece8089a201d
timestamp: 2026-01-25 00:08:47.213550
player_id: cpu_0
player_name: Diego
action: draw_deck
card_rank: 9
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}]

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


game_id: 6f61cfe0-6d2b-4b20-834a-ece8089a201d
timestamp: 2026-01-25 00:08:47.225237
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}]

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


game_id: 6f61cfe0-6d2b-4b20-834a-ece8089a201d
timestamp: 2026-01-25 00:08:47.231333
player_id: cpu_1
player_name: Sage
action: swap
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "3", "suit": "hearts"}
decision_reason: swapped K for 3 at pos 5
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: 6f61cfe0-6d2b-4b20-834a-ece8089a201d
timestamp: 2026-01-25 00:08:47.237662
player_id: cpu_2
player_name: River
action: take_discard
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "6", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: 6f61cfe0-6d2b-4b20-834a-ece8089a201d
timestamp: 2026-01-25 00:08:47.243421
player_id: cpu_2
player_name: River
action: swap
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped 3 for 5 at pos 3
hand_json:
[{"rank": "6", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: 6f61cfe0-6d2b-4b20-834a-ece8089a201d
timestamp: 2026-01-25 00:08:47.250169
player_id: cpu_3
player_name: Kenji
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": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: 6f61cfe0-6d2b-4b20-834a-ece8089a201d
timestamp: 2026-01-25 00:08:47.256675
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped 5 for 6 at pos 4
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: 6f61cfe0-6d2b-4b20-834a-ece8089a201d
timestamp: 2026-01-25 00:08:47.262521
player_id: cpu_0
player_name: Diego
action: take_discard
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took 6 from discard
visible_opponents_json:
{"Sage": [{"rank": "K", "suit": "diamonds"}, {"rank": "K", "suit": "hearts"}], "River": [{"rank": "4", "suit": "spades"}, {"rank": "3", "suit": "hearts"}], "Kenji": [{"rank": "A", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}, {"rank": "5", "suit": "hearts"}, {"rank": "2", "suit": "diamonds"}]}


game_id: 6f61cfe0-6d2b-4b20-834a-ece8089a201d
timestamp: 2026-01-25 00:08:47.268107
player_id: cpu_0
player_name: Diego
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: swapped 6 for 9 at pos 5
hand_json:
[{"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}]

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


game_id: 6f61cfe0-6d2b-4b20-834a-ece8089a201d
timestamp: 2026-01-25 00:08:47.273757
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: K
card_suit: spades
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: 6f61cfe0-6d2b-4b20-834a-ece8089a201d
timestamp: 2026-01-25 00:08:47.279806
player_id: cpu_1
player_name: Sage
action: swap
card_rank: K
card_suit: spades
discard_top_json: {"rank": "3", "suit": "diamonds"}
decision_reason: swapped K for 3 at pos 1
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: 6f61cfe0-6d2b-4b20-834a-ece8089a201d
timestamp: 2026-01-25 00:08:47.285397
player_id: cpu_2
player_name: River
action: take_discard
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "6", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: 6f61cfe0-6d2b-4b20-834a-ece8089a201d
timestamp: 2026-01-25 00:08:47.291288
player_id: cpu_2
player_name: River
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped 3 for 6 at pos 0
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: 6f61cfe0-6d2b-4b20-834a-ece8089a201d
timestamp: 2026-01-25 00:08:47.297191
player_id: cpu_3
player_name: Kenji
action: take_discard
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: 6f61cfe0-6d2b-4b20-834a-ece8089a201d
timestamp: 2026-01-25 00:08:47.303373
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: swapped 6 for 9 at pos 0
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: 6f61cfe0-6d2b-4b20-834a-ece8089a201d
timestamp: 2026-01-25 00:08:47.309205
player_id: cpu_0
player_name: Diego
action: draw_deck
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}]

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


game_id: 6f61cfe0-6d2b-4b20-834a-ece8089a201d
timestamp: 2026-01-25 00:08:47.315702
player_id: cpu_0
player_name: Diego
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped 5 for 6 at pos 5
hand_json:
[{"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}]

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


game_id: 6f61cfe0-6d2b-4b20-834a-ece8089a201d
timestamp: 2026-01-25 00:08:47.321574
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: 6f61cfe0-6d2b-4b20-834a-ece8089a201d
timestamp: 2026-01-25 00:08:47.327171
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: swapped 6 for 8 at pos 3
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: 6f61cfe0-6d2b-4b20-834a-ece8089a201d
timestamp: 2026-01-25 00:08:47.333203
player_id: cpu_2
player_name: River
action: draw_deck
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: 6f61cfe0-6d2b-4b20-834a-ece8089a201d
timestamp: 2026-01-25 00:08:47.339320
player_id: cpu_2
player_name: River
action: swap
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "spades"}
decision_reason: swapped A for 4 at pos 1
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: 6f61cfe0-6d2b-4b20-834a-ece8089a201d
timestamp: 2026-01-25 00:08:47.345361
player_id: cpu_3
player_name: Kenji
action: take_discard
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: 6f61cfe0-6d2b-4b20-834a-ece8089a201d
timestamp: 2026-01-25 00:08:47.351273
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped 4 for 6 at pos 0
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: 6f61cfe0-6d2b-4b20-834a-ece8089a201d
timestamp: 2026-01-25 00:08:47.357398
player_id: cpu_0
player_name: Diego
action: take_discard
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}]

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


game_id: 6f61cfe0-6d2b-4b20-834a-ece8089a201d
timestamp: 2026-01-25 00:08:47.363425
player_id: cpu_0
player_name: Diego
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: swapped 6 for 8 at pos 0
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}]

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


game_id: 6f61cfe0-6d2b-4b20-834a-ece8089a201d
timestamp: 2026-01-25 00:08:47.369755
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: 6f61cfe0-6d2b-4b20-834a-ece8089a201d
timestamp: 2026-01-25 00:08:47.375987
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped 2 for 6 at pos 3
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: 6f61cfe0-6d2b-4b20-834a-ece8089a201d
timestamp: 2026-01-25 00:08:47.382165
player_id: cpu_2
player_name: River
action: take_discard
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: 6f61cfe0-6d2b-4b20-834a-ece8089a201d
timestamp: 2026-01-25 00:08:47.388428
player_id: cpu_2
player_name: River
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped 6 for 7 at pos 2
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: 6f61cfe0-6d2b-4b20-834a-ece8089a201d
timestamp: 2026-01-25 00:08:47.394194
player_id: cpu_3
player_name: Kenji
action: take_discard
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: 6f61cfe0-6d2b-4b20-834a-ece8089a201d
timestamp: 2026-01-25 00:08:47.399816
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: swapped 7 for J at pos 3
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: 7d6437e2-83c5-4976-a7d5-a55208c43b9e
timestamp: 2026-01-25 00:08:47.417510
player_id: cpu_0
player_name: Kenji
action: take_discard
card_rank: 7
card_suit: hearts
decision_reason: took 7 from discard
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": true}]

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


game_id: 7d6437e2-83c5-4976-a7d5-a55208c43b9e
timestamp: 2026-01-25 00:08:47.423023
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: swapped 7 for J at pos 1
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": true}]

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


game_id: 7d6437e2-83c5-4976-a7d5-a55208c43b9e
timestamp: 2026-01-25 00:08:47.428466
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: Q
card_suit: spades
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}]

visible_opponents_json:
{"Kenji": [{"rank": "7", "suit": "hearts"}, {"rank": "J", "suit": "spades"}], "Diego": [{"rank": "8", "suit": "spades"}, {"rank": "3", "suit": "spades"}], "Sage": [{"rank": "4", "suit": "hearts"}, {"rank": "2", "suit": "spades"}]}


game_id: 7d6437e2-83c5-4976-a7d5-a55208c43b9e
timestamp: 2026-01-25 00:08:47.440836
player_id: cpu_2
player_name: Diego
action: draw_deck
card_rank: 9
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 7d6437e2-83c5-4976-a7d5-a55208c43b9e
timestamp: 2026-01-25 00:08:47.451839
player_id: cpu_3
player_name: Sage
action: draw_deck
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}]

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


game_id: 7d6437e2-83c5-4976-a7d5-a55208c43b9e
timestamp: 2026-01-25 00:08:47.457475
player_id: cpu_3
player_name: Sage
action: swap
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: swapped 4 for J at pos 5
hand_json:
[{"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 7d6437e2-83c5-4976-a7d5-a55208c43b9e
timestamp: 2026-01-25 00:08:47.463089
player_id: cpu_0
player_name: Kenji
action: take_discard
card_rank: J
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: took J from discard
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": true}]

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


game_id: 7d6437e2-83c5-4976-a7d5-a55208c43b9e
timestamp: 2026-01-25 00:08:47.469630
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: J
card_suit: diamonds
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: swapped J for 4 at pos 2
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": true}]

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


game_id: 7d6437e2-83c5-4976-a7d5-a55208c43b9e
timestamp: 2026-01-25 00:08:47.476073
player_id: cpu_1
player_name: Maya
action: take_discard
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: 7d6437e2-83c5-4976-a7d5-a55208c43b9e
timestamp: 2026-01-25 00:08:47.482164
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped 4 for 5 at pos 1
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: 7d6437e2-83c5-4976-a7d5-a55208c43b9e
timestamp: 2026-01-25 00:08:47.488211
player_id: cpu_2
player_name: Diego
action: take_discard
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 7d6437e2-83c5-4976-a7d5-a55208c43b9e
timestamp: 2026-01-25 00:08:47.494253
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: swapped 5 for 8 at pos 1
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 7d6437e2-83c5-4976-a7d5-a55208c43b9e
timestamp: 2026-01-25 00:08:47.499915
player_id: cpu_3
player_name: Sage
action: draw_deck
card_rank: Q
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 7d6437e2-83c5-4976-a7d5-a55208c43b9e
timestamp: 2026-01-25 00:08:47.511242
player_id: cpu_0
player_name: Kenji
action: draw_deck
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": true}]

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


game_id: 7d6437e2-83c5-4976-a7d5-a55208c43b9e
timestamp: 2026-01-25 00:08:47.516779
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: swapped 2 for J at pos 2
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": true}]

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


game_id: 7d6437e2-83c5-4976-a7d5-a55208c43b9e
timestamp: 2026-01-25 00:08:47.522691
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: 7d6437e2-83c5-4976-a7d5-a55208c43b9e
timestamp: 2026-01-25 00:08:47.528708
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped 2 for 5 at pos 5
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: 7d6437e2-83c5-4976-a7d5-a55208c43b9e
timestamp: 2026-01-25 00:08:47.534604
player_id: cpu_2
player_name: Diego
action: take_discard
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 7d6437e2-83c5-4976-a7d5-a55208c43b9e
timestamp: 2026-01-25 00:08:47.540296
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: swapped 5 for 8 at pos 4
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 7d6437e2-83c5-4976-a7d5-a55208c43b9e
timestamp: 2026-01-25 00:08:47.546079
player_id: cpu_3
player_name: Sage
action: draw_deck
card_rank: Q
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Kenji": [{"rank": "7", "suit": "hearts"}, {"rank": "2", "suit": "clubs"}, {"rank": "J", "suit": "spades"}], "Maya": [{"rank": "4", "suit": "clubs"}, {"rank": "2", "suit": "hearts"}], "Diego": [{"rank": "5", "suit": "diamonds"}, {"rank": "5", "suit": "clubs"}, {"rank": "3", "suit": "spades"}]}


game_id: 7d6437e2-83c5-4976-a7d5-a55208c43b9e
timestamp: 2026-01-25 00:08:47.558942
player_id: cpu_0
player_name: Kenji
action: draw_deck
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": true}]

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


game_id: 7d6437e2-83c5-4976-a7d5-a55208c43b9e
timestamp: 2026-01-25 00:08:47.564846
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped 7 for 7 at pos 4
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": true}]

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


game_id: 7d6437e2-83c5-4976-a7d5-a55208c43b9e
timestamp: 2026-01-25 00:08:47.570414
player_id: cpu_1
player_name: Maya
action: take_discard
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: 7d6437e2-83c5-4976-a7d5-a55208c43b9e
timestamp: 2026-01-25 00:08:47.576488
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: swapped 7 for 9 at pos 4
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: 7d6437e2-83c5-4976-a7d5-a55208c43b9e
timestamp: 2026-01-25 00:08:47.582147
player_id: cpu_2
player_name: Diego
action: draw_deck
card_rank: 10
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 7d6437e2-83c5-4976-a7d5-a55208c43b9e
timestamp: 2026-01-25 00:08:47.594341
player_id: cpu_3
player_name: Sage
action: draw_deck
card_rank: 9
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Kenji": [{"rank": "7", "suit": "hearts"}, {"rank": "2", "suit": "clubs"}, {"rank": "7", "suit": "diamonds"}, {"rank": "J", "suit": "spades"}], "Maya": [{"rank": "4", "suit": "clubs"}, {"rank": "7", "suit": "spades"}, {"rank": "2", "suit": "hearts"}], "Diego": [{"rank": "5", "suit": "diamonds"}, {"rank": "5", "suit": "clubs"}, {"rank": "3", "suit": "spades"}]}


game_id: 7d6437e2-83c5-4976-a7d5-a55208c43b9e
timestamp: 2026-01-25 00:08:47.606742
player_id: cpu_0
player_name: Kenji
action: draw_deck
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": true}]

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


game_id: 7d6437e2-83c5-4976-a7d5-a55208c43b9e
timestamp: 2026-01-25 00:08:47.612753
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: swapped A for J at pos 5
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 7d6437e2-83c5-4976-a7d5-a55208c43b9e
timestamp: 2026-01-25 00:08:47.618508
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: 7d6437e2-83c5-4976-a7d5-a55208c43b9e
timestamp: 2026-01-25 00:08:47.624251
player_id: cpu_1
player_name: Maya
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": "6", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: 7d6437e2-83c5-4976-a7d5-a55208c43b9e
timestamp: 2026-01-25 00:08:47.630166
player_id: cpu_2
player_name: Diego
action: draw_deck
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Kenji": [{"rank": "7", "suit": "hearts"}, {"rank": "2", "suit": "clubs"}, {"rank": "7", "suit": "diamonds"}, {"rank": "A", "suit": "hearts"}], "Maya": [{"rank": "4", "suit": "clubs"}, {"rank": "8", "suit": "hearts"}, {"rank": "7", "suit": "spades"}, {"rank": "2", "suit": "hearts"}], "Sage": [{"rank": "4", "suit": "hearts"}, {"rank": "2", "suit": "spades"}, {"rank": "4", "suit": "spades"}]}


game_id: 7d6437e2-83c5-4976-a7d5-a55208c43b9e
timestamp: 2026-01-25 00:08:47.636025
player_id: cpu_2
player_name: Diego
action: swap
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped A for 5 at pos 1
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 7d6437e2-83c5-4976-a7d5-a55208c43b9e
timestamp: 2026-01-25 00:08:47.642081
player_id: cpu_3
player_name: Sage
action: draw_deck
card_rank: 9
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Kenji": [{"rank": "7", "suit": "hearts"}, {"rank": "2", "suit": "clubs"}, {"rank": "7", "suit": "diamonds"}, {"rank": "A", "suit": "hearts"}], "Maya": [{"rank": "4", "suit": "clubs"}, {"rank": "8", "suit": "hearts"}, {"rank": "7", "suit": "spades"}, {"rank": "2", "suit": "hearts"}], "Diego": [{"rank": "A", "suit": "diamonds"}, {"rank": "5", "suit": "clubs"}, {"rank": "3", "suit": "spades"}]}


game_id: 7d6437e2-83c5-4976-a7d5-a55208c43b9e
timestamp: 2026-01-25 00:08:47.654704
player_id: cpu_0
player_name: Kenji
action: draw_deck
card_rank: 8
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 7d6437e2-83c5-4976-a7d5-a55208c43b9e
timestamp: 2026-01-25 00:08:47.661104
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 8
card_suit: clubs
discard_top_json: {"rank": "A", "suit": "spades"}
decision_reason: swapped 8 for A at pos 3
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 7d6437e2-83c5-4976-a7d5-a55208c43b9e
timestamp: 2026-01-25 00:08:47.667095
player_id: cpu_1
player_name: Maya
action: take_discard
card_rank: A
card_suit: spades
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: took A from discard
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: 7d6437e2-83c5-4976-a7d5-a55208c43b9e
timestamp: 2026-01-25 00:08:47.673091
player_id: cpu_1
player_name: Maya
action: swap
card_rank: A
card_suit: spades
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: swapped A for 8 at pos 3
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: 7d6437e2-83c5-4976-a7d5-a55208c43b9e
timestamp: 2026-01-25 00:08:47.678997
player_id: cpu_2
player_name: Diego
action: draw_deck
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 7d6437e2-83c5-4976-a7d5-a55208c43b9e
timestamp: 2026-01-25 00:08:47.684782
player_id: cpu_2
player_name: Diego
action: swap
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped A for 5 at pos 4
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 7d6437e2-83c5-4976-a7d5-a55208c43b9e
timestamp: 2026-01-25 00:08:47.690934
player_id: cpu_3
player_name: Sage
action: take_discard
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: took 5 from discard
visible_opponents_json:
{"Kenji": [{"rank": "7", "suit": "hearts"}, {"rank": "2", "suit": "clubs"}, {"rank": "8", "suit": "clubs"}, {"rank": "7", "suit": "diamonds"}, {"rank": "A", "suit": "hearts"}], "Maya": [{"rank": "4", "suit": "clubs"}, {"rank": "A", "suit": "spades"}, {"rank": "7", "suit": "spades"}, {"rank": "2", "suit": "hearts"}], "Diego": [{"rank": "A", "suit": "diamonds"}, {"rank": "A", "suit": "clubs"}, {"rank": "3", "suit": "spades"}]}


game_id: 7d6437e2-83c5-4976-a7d5-a55208c43b9e
timestamp: 2026-01-25 00:08:47.698259
player_id: cpu_3
player_name: Sage
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped 5 for 5 at pos 1
hand_json:
[{"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 7d6437e2-83c5-4976-a7d5-a55208c43b9e
timestamp: 2026-01-25 00:08:47.703992
player_id: cpu_0
player_name: Kenji
action: take_discard
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 7d6437e2-83c5-4976-a7d5-a55208c43b9e
timestamp: 2026-01-25 00:08:47.709496
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: swapped 5 for 8 at pos 3
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 7d6437e2-83c5-4976-a7d5-a55208c43b9e
timestamp: 2026-01-25 00:08:47.715370
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: 7d6437e2-83c5-4976-a7d5-a55208c43b9e
timestamp: 2026-01-25 00:08:47.721384
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped 3 for 7 at pos 4
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: 7d6437e2-83c5-4976-a7d5-a55208c43b9e
timestamp: 2026-01-25 00:08:47.727619
player_id: cpu_2
player_name: Diego
action: take_discard
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 7d6437e2-83c5-4976-a7d5-a55208c43b9e
timestamp: 2026-01-25 00:08:47.733913
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "K", "suit": "spades"}
decision_reason: swapped 7 for K at pos 3
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 7d6437e2-83c5-4976-a7d5-a55208c43b9e
timestamp: 2026-01-25 00:08:47.742006
player_id: cpu_3
player_name: Sage
action: take_discard
card_rank: K
card_suit: spades
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: took K from discard
hand_json:
[{"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 7d6437e2-83c5-4976-a7d5-a55208c43b9e
timestamp: 2026-01-25 00:08:47.748174
player_id: cpu_3
player_name: Sage
action: swap
card_rank: K
card_suit: spades
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped K for 5 at pos 1
hand_json:
[{"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 7d6437e2-83c5-4976-a7d5-a55208c43b9e
timestamp: 2026-01-25 00:08:47.754372
player_id: cpu_0
player_name: Kenji
action: take_discard
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 7d6437e2-83c5-4976-a7d5-a55208c43b9e
timestamp: 2026-01-25 00:08:47.760683
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "3", "suit": "hearts"}
decision_reason: swapped 5 for 3 at pos 0
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 7d6437e2-83c5-4976-a7d5-a55208c43b9e
timestamp: 2026-01-25 00:08:47.766700
player_id: cpu_1
player_name: Maya
action: take_discard
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: 7d6437e2-83c5-4976-a7d5-a55208c43b9e
timestamp: 2026-01-25 00:08:47.772892
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: swapped 3 for 4 at pos 1
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: 7d6437e2-83c5-4976-a7d5-a55208c43b9e
timestamp: 2026-01-25 00:08:47.778720
player_id: cpu_2
player_name: Diego
action: take_discard
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 7d6437e2-83c5-4976-a7d5-a55208c43b9e
timestamp: 2026-01-25 00:08:47.784425
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped 4 for 7 at pos 3
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 7d6437e2-83c5-4976-a7d5-a55208c43b9e
timestamp: 2026-01-25 00:08:47.790636
player_id: cpu_3
player_name: Sage
action: take_discard
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 7d6437e2-83c5-4976-a7d5-a55208c43b9e
timestamp: 2026-01-25 00:08:47.796354
player_id: cpu_3
player_name: Sage
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped 7 for 6 at pos 4
hand_json:
[{"rank": "10", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 94a3cec1-d9ff-43dd-af70-9409dd78c807
timestamp: 2026-01-25 00:08:47.813893
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}]

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


game_id: 94a3cec1-d9ff-43dd-af70-9409dd78c807
timestamp: 2026-01-25 00:08:47.820019
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "2", "suit": "diamonds"}
decision_reason: swapped A for 2 at pos 0
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}]

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


game_id: 94a3cec1-d9ff-43dd-af70-9409dd78c807
timestamp: 2026-01-25 00:08:47.825875
player_id: cpu_1
player_name: River
action: take_discard
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: took 2 from discard
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}]

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


game_id: 94a3cec1-d9ff-43dd-af70-9409dd78c807
timestamp: 2026-01-25 00:08:47.834257
player_id: cpu_1
player_name: River
action: swap
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped 2 for 7 at pos 3
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}]

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


game_id: 94a3cec1-d9ff-43dd-af70-9409dd78c807
timestamp: 2026-01-25 00:08:47.839900
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}]

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


game_id: 94a3cec1-d9ff-43dd-af70-9409dd78c807
timestamp: 2026-01-25 00:08:47.845670
player_id: cpu_2
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": "9", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: 94a3cec1-d9ff-43dd-af70-9409dd78c807
timestamp: 2026-01-25 00:08:47.852214
player_id: cpu_3
player_name: Diego
action: draw_deck
card_rank: Q
card_suit: spades
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}]

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


game_id: 94a3cec1-d9ff-43dd-af70-9409dd78c807
timestamp: 2026-01-25 00:08:47.864181
player_id: cpu_0
player_name: Sofia
action: take_discard
card_rank: Q
card_suit: spades
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: took Q from discard
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": false}]

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


game_id: 94a3cec1-d9ff-43dd-af70-9409dd78c807
timestamp: 2026-01-25 00:08:47.870194
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: Q
card_suit: spades
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped Q for 7 at pos 4
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}]

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


game_id: 94a3cec1-d9ff-43dd-af70-9409dd78c807
timestamp: 2026-01-25 00:08:47.876611
player_id: cpu_1
player_name: River
action: take_discard
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}]

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


game_id: 94a3cec1-d9ff-43dd-af70-9409dd78c807
timestamp: 2026-01-25 00:08:47.882654
player_id: cpu_1
player_name: River
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "A", "suit": "hearts"}
decision_reason: swapped 7 for A at pos 0
hand_json:
[{"rank": "7", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}]

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


game_id: 94a3cec1-d9ff-43dd-af70-9409dd78c807
timestamp: 2026-01-25 00:08:47.889403
player_id: cpu_2
player_name: Kenji
action: take_discard
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: took A from discard
hand_json:
[{"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: 94a3cec1-d9ff-43dd-af70-9409dd78c807
timestamp: 2026-01-25 00:08:47.895465
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped A for 5 at pos 5
hand_json:
[{"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 94a3cec1-d9ff-43dd-af70-9409dd78c807
timestamp: 2026-01-25 00:08:47.901116
player_id: cpu_3
player_name: Diego
action: take_discard
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}]

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


game_id: 94a3cec1-d9ff-43dd-af70-9409dd78c807
timestamp: 2026-01-25 00:08:47.907249
player_id: cpu_3
player_name: Diego
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped 5 for 6 at pos 4
hand_json:
[{"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}]

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


game_id: 94a3cec1-d9ff-43dd-af70-9409dd78c807
timestamp: 2026-01-25 00:08:47.914307
player_id: cpu_0
player_name: Sofia
action: take_discard
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}]

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


game_id: 94a3cec1-d9ff-43dd-af70-9409dd78c807
timestamp: 2026-01-25 00:08:47.920176
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: swapped 6 for Q at pos 1
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}]

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


game_id: 94a3cec1-d9ff-43dd-af70-9409dd78c807
timestamp: 2026-01-25 00:08:47.925947
player_id: cpu_1
player_name: River
action: draw_deck
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}]

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


game_id: 94a3cec1-d9ff-43dd-af70-9409dd78c807
timestamp: 2026-01-25 00:08:47.931918
player_id: cpu_1
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 0
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}]

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


game_id: 94a3cec1-d9ff-43dd-af70-9409dd78c807
timestamp: 2026-01-25 00:08:47.937802
player_id: cpu_2
player_name: Kenji
action: take_discard
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 94a3cec1-d9ff-43dd-af70-9409dd78c807
timestamp: 2026-01-25 00:08:47.943730
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: swapped 7 for 9 at pos 0
hand_json:
[{"rank": "7", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 94a3cec1-d9ff-43dd-af70-9409dd78c807
timestamp: 2026-01-25 00:08:47.949369
player_id: cpu_3
player_name: Diego
action: draw_deck
card_rank: 8
card_suit: spades
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}]

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


game_id: 94a3cec1-d9ff-43dd-af70-9409dd78c807
timestamp: 2026-01-25 00:08:47.954799
player_id: cpu_3
player_name: Diego
action: swap
card_rank: 8
card_suit: spades
discard_top_json: {"rank": "3", "suit": "clubs"}
decision_reason: swapped 8 for 3 at pos 3
hand_json:
[{"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}]

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


game_id: 94a3cec1-d9ff-43dd-af70-9409dd78c807
timestamp: 2026-01-25 00:08:47.960385
player_id: cpu_0
player_name: Sofia
action: take_discard
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}]

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


game_id: 94a3cec1-d9ff-43dd-af70-9409dd78c807
timestamp: 2026-01-25 00:08:47.966131
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: swapped 3 for Q at pos 4
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}]

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


game_id: 94a3cec1-d9ff-43dd-af70-9409dd78c807
timestamp: 2026-01-25 00:08:47.972084
player_id: cpu_1
player_name: River
action: draw_deck
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}]

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


game_id: 94a3cec1-d9ff-43dd-af70-9409dd78c807
timestamp: 2026-01-25 00:08:47.978780
player_id: cpu_1
player_name: River
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "K", "suit": "hearts"}
decision_reason: swapped 3 for K at pos 2
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}]

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


game_id: 94a3cec1-d9ff-43dd-af70-9409dd78c807
timestamp: 2026-01-25 00:08:47.984567
player_id: cpu_2
player_name: Kenji
action: take_discard
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took K from discard
hand_json:
[{"rank": "7", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 94a3cec1-d9ff-43dd-af70-9409dd78c807
timestamp: 2026-01-25 00:08:47.990722
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped K for 7 at pos 0
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


