# moves

game_id: 93ebe700-df21-4702-a110-9f5207c3ee4d
timestamp: 2026-01-24 18:51:48.852757
player_id: cpu_0
player_name: Diego
action: swap
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped A for 7 at pos 5
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: 93ebe700-df21-4702-a110-9f5207c3ee4d
timestamp: 2026-01-24 18:51:48.860425
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}]

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


game_id: 93ebe700-df21-4702-a110-9f5207c3ee4d
timestamp: 2026-01-24 18:51:48.867859
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped 2 for 5 at pos 2
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}]

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


game_id: 93ebe700-df21-4702-a110-9f5207c3ee4d
timestamp: 2026-01-24 18:51:48.873978
player_id: cpu_2
player_name: Kenji
action: take_discard
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}]

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


game_id: 93ebe700-df21-4702-a110-9f5207c3ee4d
timestamp: 2026-01-24 18:51:48.879501
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: swapped 5 for 8 at pos 1
hand_json:
[{"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}]

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


game_id: 93ebe700-df21-4702-a110-9f5207c3ee4d
timestamp: 2026-01-24 18:51:48.885250
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}]

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


game_id: 93ebe700-df21-4702-a110-9f5207c3ee4d
timestamp: 2026-01-24 18:51:48.891532
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped 5 for 5 at pos 2
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}]

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


game_id: 93ebe700-df21-4702-a110-9f5207c3ee4d
timestamp: 2026-01-24 18:51:48.897362
player_id: cpu_0
player_name: Diego
action: draw_deck
card_rank: 9
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: 93ebe700-df21-4702-a110-9f5207c3ee4d
timestamp: 2026-01-24 18:51:48.909666
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: Q
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}]

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


game_id: 93ebe700-df21-4702-a110-9f5207c3ee4d
timestamp: 2026-01-24 18:51:48.922143
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: 9
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}]

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


game_id: 93ebe700-df21-4702-a110-9f5207c3ee4d
timestamp: 2026-01-24 18:51:48.928160
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 9
card_suit: spades
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 9 for 6 at pos 3
hand_json:
[{"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}]

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


game_id: 93ebe700-df21-4702-a110-9f5207c3ee4d
timestamp: 2026-01-24 18:51:48.934083
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 9
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}]

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


game_id: 93ebe700-df21-4702-a110-9f5207c3ee4d
timestamp: 2026-01-24 18:51:48.945945
player_id: cpu_0
player_name: Diego
action: draw_deck
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Sage": [{"rank": "2", "suit": "clubs"}, {"rank": "4", "suit": "hearts"}], "Kenji": [{"rank": "5", "suit": "diamonds"}, {"rank": "K", "suit": "spades"}, {"rank": "9", "suit": "spades"}, {"rank": "8", "suit": "spades"}], "Marcus": [{"rank": "2", "suit": "diamonds"}, {"rank": "5", "suit": "clubs"}, {"rank": "K", "suit": "clubs"}]}


game_id: 93ebe700-df21-4702-a110-9f5207c3ee4d
timestamp: 2026-01-24 18:51:48.951628
player_id: cpu_0
player_name: Diego
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "A", "suit": "hearts"}
decision_reason: swapped 3 for A at pos 3
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: 93ebe700-df21-4702-a110-9f5207c3ee4d
timestamp: 2026-01-24 18:51:48.957739
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: took A from discard
visible_opponents_json:
{"Diego": [{"rank": "2", "suit": "spades"}, {"rank": "3", "suit": "diamonds"}, {"rank": "A", "suit": "clubs"}], "Kenji": [{"rank": "5", "suit": "diamonds"}, {"rank": "K", "suit": "spades"}, {"rank": "9", "suit": "spades"}, {"rank": "8", "suit": "spades"}], "Marcus": [{"rank": "2", "suit": "diamonds"}, {"rank": "5", "suit": "clubs"}, {"rank": "K", "suit": "clubs"}]}


game_id: 93ebe700-df21-4702-a110-9f5207c3ee4d
timestamp: 2026-01-24 18:51:48.964132
player_id: cpu_1
player_name: Sage
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: swapped A for 4 at pos 4
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}]

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


game_id: 93ebe700-df21-4702-a110-9f5207c3ee4d
timestamp: 2026-01-24 18:51:48.970757
player_id: cpu_2
player_name: Kenji
action: take_discard
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}]

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


game_id: 93ebe700-df21-4702-a110-9f5207c3ee4d
timestamp: 2026-01-24 18:51:48.976781
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: swapped 4 for 9 at pos 3
hand_json:
[{"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}]

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


game_id: 93ebe700-df21-4702-a110-9f5207c3ee4d
timestamp: 2026-01-24 18:51:48.982849
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Diego": [{"rank": "2", "suit": "spades"}, {"rank": "3", "suit": "diamonds"}, {"rank": "A", "suit": "clubs"}], "Sage": [{"rank": "2", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}], "Kenji": [{"rank": "5", "suit": "diamonds"}, {"rank": "K", "suit": "spades"}, {"rank": "4", "suit": "hearts"}, {"rank": "8", "suit": "spades"}]}


game_id: 93ebe700-df21-4702-a110-9f5207c3ee4d
timestamp: 2026-01-24 18:51:48.994787
player_id: cpu_0
player_name: Diego
action: draw_deck
card_rank: 10
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: 93ebe700-df21-4702-a110-9f5207c3ee4d
timestamp: 2026-01-24 18:51:49.006076
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}]

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


game_id: 93ebe700-df21-4702-a110-9f5207c3ee4d
timestamp: 2026-01-24 18:51:49.012167
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: swapped 3 for 10 at pos 1
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}]

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


game_id: 93ebe700-df21-4702-a110-9f5207c3ee4d
timestamp: 2026-01-24 18:51:49.017778
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}]

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


game_id: 93ebe700-df21-4702-a110-9f5207c3ee4d
timestamp: 2026-01-24 18:51:49.023557
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: swapped 7 for 8 at pos 4
hand_json:
[{"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}]

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


game_id: 93ebe700-df21-4702-a110-9f5207c3ee4d
timestamp: 2026-01-24 18:51:49.029377
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Diego": [{"rank": "2", "suit": "spades"}, {"rank": "3", "suit": "diamonds"}, {"rank": "A", "suit": "clubs"}], "Sage": [{"rank": "3", "suit": "spades"}, {"rank": "2", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}], "Kenji": [{"rank": "5", "suit": "diamonds"}, {"rank": "K", "suit": "spades"}, {"rank": "4", "suit": "hearts"}, {"rank": "7", "suit": "clubs"}]}


game_id: 93ebe700-df21-4702-a110-9f5207c3ee4d
timestamp: 2026-01-24 18:51:49.041017
player_id: cpu_0
player_name: Diego
action: draw_deck
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Sage": [{"rank": "3", "suit": "spades"}, {"rank": "2", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}], "Kenji": [{"rank": "5", "suit": "diamonds"}, {"rank": "K", "suit": "spades"}, {"rank": "4", "suit": "hearts"}, {"rank": "7", "suit": "clubs"}], "Marcus": [{"rank": "2", "suit": "diamonds"}, {"rank": "5", "suit": "clubs"}, {"rank": "K", "suit": "clubs"}]}


game_id: 93ebe700-df21-4702-a110-9f5207c3ee4d
timestamp: 2026-01-24 18:51:49.046921
player_id: cpu_0
player_name: Diego
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped 4 for 6 at pos 4
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: 93ebe700-df21-4702-a110-9f5207c3ee4d
timestamp: 2026-01-24 18:51:49.053130
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: 8
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}]

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


game_id: 93ebe700-df21-4702-a110-9f5207c3ee4d
timestamp: 2026-01-24 18:51:49.065854
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}]

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


game_id: 93ebe700-df21-4702-a110-9f5207c3ee4d
timestamp: 2026-01-24 18:51:49.071673
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: swapped 4 for 8 at pos 0
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}]

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


game_id: 93ebe700-df21-4702-a110-9f5207c3ee4d
timestamp: 2026-01-24 18:51:49.077533
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: Q
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Diego": [{"rank": "2", "suit": "spades"}, {"rank": "3", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}, {"rank": "A", "suit": "clubs"}], "Sage": [{"rank": "3", "suit": "spades"}, {"rank": "2", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}], "Kenji": [{"rank": "4", "suit": "clubs"}, {"rank": "5", "suit": "diamonds"}, {"rank": "K", "suit": "spades"}, {"rank": "4", "suit": "hearts"}, {"rank": "7", "suit": "clubs"}]}


game_id: 93ebe700-df21-4702-a110-9f5207c3ee4d
timestamp: 2026-01-24 18:51:49.090552
player_id: cpu_0
player_name: Diego
action: draw_deck
card_rank: J
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: 93ebe700-df21-4702-a110-9f5207c3ee4d
timestamp: 2026-01-24 18:51:49.103537
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Diego": [{"rank": "2", "suit": "spades"}, {"rank": "3", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}, {"rank": "A", "suit": "clubs"}], "Kenji": [{"rank": "4", "suit": "clubs"}, {"rank": "5", "suit": "diamonds"}, {"rank": "K", "suit": "spades"}, {"rank": "4", "suit": "hearts"}, {"rank": "7", "suit": "clubs"}], "Marcus": [{"rank": "2", "suit": "diamonds"}, {"rank": "5", "suit": "clubs"}, {"rank": "K", "suit": "clubs"}]}


game_id: 93ebe700-df21-4702-a110-9f5207c3ee4d
timestamp: 2026-01-24 18:51:49.109388
player_id: cpu_1
player_name: Sage
action: swap
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "3", "suit": "spades"}
decision_reason: swapped K for 3 at pos 1
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}]

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


game_id: 93ebe700-df21-4702-a110-9f5207c3ee4d
timestamp: 2026-01-24 18:51:49.114795
player_id: cpu_2
player_name: Kenji
action: take_discard
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}]

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


game_id: 93ebe700-df21-4702-a110-9f5207c3ee4d
timestamp: 2026-01-24 18:51:49.120234
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped 3 for 7 at pos 4
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}]

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


game_id: 93ebe700-df21-4702-a110-9f5207c3ee4d
timestamp: 2026-01-24 18:51:49.126397
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Diego": [{"rank": "2", "suit": "spades"}, {"rank": "3", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}, {"rank": "A", "suit": "clubs"}], "Sage": [{"rank": "K", "suit": "diamonds"}, {"rank": "2", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}], "Kenji": [{"rank": "4", "suit": "clubs"}, {"rank": "5", "suit": "diamonds"}, {"rank": "K", "suit": "spades"}, {"rank": "4", "suit": "hearts"}, {"rank": "3", "suit": "spades"}]}


game_id: 93ebe700-df21-4702-a110-9f5207c3ee4d
timestamp: 2026-01-24 18:51:49.131976
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped 3 for 5 at pos 2
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}]

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


game_id: 93ebe700-df21-4702-a110-9f5207c3ee4d
timestamp: 2026-01-24 18:51:49.139884
player_id: cpu_0
player_name: Diego
action: draw_deck
card_rank: 10
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Sage": [{"rank": "K", "suit": "diamonds"}, {"rank": "2", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}], "Kenji": [{"rank": "4", "suit": "clubs"}, {"rank": "5", "suit": "diamonds"}, {"rank": "K", "suit": "spades"}, {"rank": "4", "suit": "hearts"}, {"rank": "3", "suit": "spades"}], "Marcus": [{"rank": "2", "suit": "diamonds"}, {"rank": "3", "suit": "hearts"}, {"rank": "K", "suit": "clubs"}]}


game_id: 93ebe700-df21-4702-a110-9f5207c3ee4d
timestamp: 2026-01-24 18:51:49.153247
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: A
card_suit: spades
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}]

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


game_id: 93ebe700-df21-4702-a110-9f5207c3ee4d
timestamp: 2026-01-24 18:51:49.159124
player_id: cpu_1
player_name: Sage
action: swap
card_rank: A
card_suit: spades
discard_top_json: {"rank": "K", "suit": "hearts"}
decision_reason: swapped A for K at pos 5
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}]

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


game_id: 93ebe700-df21-4702-a110-9f5207c3ee4d
timestamp: 2026-01-24 18:51:49.165420
player_id: cpu_2
player_name: Kenji
action: take_discard
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: took K from discard
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}]

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


game_id: 93ebe700-df21-4702-a110-9f5207c3ee4d
timestamp: 2026-01-24 18:51:49.171749
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped K for 5 at pos 1
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}]

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


game_id: 93ebe700-df21-4702-a110-9f5207c3ee4d
timestamp: 2026-01-24 18:51:49.177878
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: J
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}]

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


game_id: 93ebe700-df21-4702-a110-9f5207c3ee4d
timestamp: 2026-01-24 18:51:49.191382
player_id: cpu_0
player_name: Diego
action: draw_deck
card_rank: Q
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Sage": [{"rank": "K", "suit": "diamonds"}, {"rank": "2", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "A", "suit": "spades"}], "Kenji": [{"rank": "4", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}, {"rank": "K", "suit": "spades"}, {"rank": "4", "suit": "hearts"}, {"rank": "3", "suit": "spades"}], "Marcus": [{"rank": "2", "suit": "diamonds"}, {"rank": "3", "suit": "hearts"}, {"rank": "K", "suit": "clubs"}]}


game_id: 93ebe700-df21-4702-a110-9f5207c3ee4d
timestamp: 2026-01-24 18:51:49.203896
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}]

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


game_id: 93ebe700-df21-4702-a110-9f5207c3ee4d
timestamp: 2026-01-24 18:51:49.247085
player_id: cpu_0
player_name: Diego
action: swap
card_rank: Q
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped Q for 5 at pos 1
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}]


game_id: 93ebe700-df21-4702-a110-9f5207c3ee4d
timestamp: 2026-01-24 18:51:49.253474
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Diego": [{"rank": "2", "suit": "spades"}, {"rank": "Q", "suit": "diamonds"}, {"rank": "3", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}, {"rank": "A", "suit": "clubs"}], "Kenji": [{"rank": "4", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}, {"rank": "K", "suit": "spades"}, {"rank": "4", "suit": "hearts"}, {"rank": "3", "suit": "spades"}], "Marcus": [{"rank": "2", "suit": "diamonds"}, {"rank": "3", "suit": "hearts"}, {"rank": "K", "suit": "clubs"}]}


game_id: 93ebe700-df21-4702-a110-9f5207c3ee4d
timestamp: 2026-01-24 18:51:49.259704
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: swapped 5 for J at pos 0
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}]

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


game_id: 93ebe700-df21-4702-a110-9f5207c3ee4d
timestamp: 2026-01-24 18:51:49.265368
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: 10
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Diego": [{"rank": "2", "suit": "spades"}, {"rank": "Q", "suit": "diamonds"}, {"rank": "3", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}, {"rank": "A", "suit": "clubs"}], "Sage": [{"rank": "5", "suit": "diamonds"}, {"rank": "K", "suit": "diamonds"}, {"rank": "2", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "A", "suit": "spades"}], "Marcus": [{"rank": "2", "suit": "diamonds"}, {"rank": "3", "suit": "hearts"}, {"rank": "K", "suit": "clubs"}]}


game_id: 93ebe700-df21-4702-a110-9f5207c3ee4d
timestamp: 2026-01-24 18:51:49.276901
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 8
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Diego": [{"rank": "2", "suit": "spades"}, {"rank": "Q", "suit": "diamonds"}, {"rank": "3", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}, {"rank": "A", "suit": "clubs"}], "Sage": [{"rank": "5", "suit": "diamonds"}, {"rank": "K", "suit": "diamonds"}, {"rank": "2", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "A", "suit": "spades"}], "Kenji": [{"rank": "4", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}, {"rank": "K", "suit": "spades"}, {"rank": "4", "suit": "hearts"}, {"rank": "3", "suit": "spades"}]}


game_id: 93ebe700-df21-4702-a110-9f5207c3ee4d
timestamp: 2026-01-24 18:51:49.288836
player_id: cpu_0
player_name: Diego
action: take_discard
card_rank: 8
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: took 8 from discard
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: 93ebe700-df21-4702-a110-9f5207c3ee4d
timestamp: 2026-01-24 18:51:49.294750
player_id: cpu_0
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 1
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: 93ebe700-df21-4702-a110-9f5207c3ee4d
timestamp: 2026-01-24 18:51:49.300975
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}]

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


game_id: 93ebe700-df21-4702-a110-9f5207c3ee4d
timestamp: 2026-01-24 18:51:49.307095
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "2", "suit": "hearts"}
decision_reason: swapped 5 for 2 at pos 3
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}]

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


game_id: 93ebe700-df21-4702-a110-9f5207c3ee4d
timestamp: 2026-01-24 18:51:49.313296
player_id: cpu_2
player_name: Kenji
action: take_discard
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: took 2 from discard
visible_opponents_json:
{"Diego": [{"rank": "2", "suit": "spades"}, {"rank": "8", "suit": "diamonds"}, {"rank": "3", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}, {"rank": "A", "suit": "clubs"}], "Sage": [{"rank": "5", "suit": "diamonds"}, {"rank": "K", "suit": "diamonds"}, {"rank": "2", "suit": "clubs"}, {"rank": "5", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "A", "suit": "spades"}], "Marcus": [{"rank": "2", "suit": "diamonds"}, {"rank": "3", "suit": "hearts"}, {"rank": "K", "suit": "clubs"}]}


game_id: 93ebe700-df21-4702-a110-9f5207c3ee4d
timestamp: 2026-01-24 18:51:49.319170
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: swapped 2 for 4 at pos 0
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}]

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


game_id: 93ebe700-df21-4702-a110-9f5207c3ee4d
timestamp: 2026-01-24 18:51:49.326128
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Diego": [{"rank": "2", "suit": "spades"}, {"rank": "8", "suit": "diamonds"}, {"rank": "3", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}, {"rank": "A", "suit": "clubs"}], "Sage": [{"rank": "5", "suit": "diamonds"}, {"rank": "K", "suit": "diamonds"}, {"rank": "2", "suit": "clubs"}, {"rank": "5", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "A", "suit": "spades"}], "Kenji": [{"rank": "2", "suit": "hearts"}, {"rank": "K", "suit": "hearts"}, {"rank": "K", "suit": "spades"}, {"rank": "4", "suit": "hearts"}, {"rank": "3", "suit": "spades"}]}


game_id: 93ebe700-df21-4702-a110-9f5207c3ee4d
timestamp: 2026-01-24 18:51:49.338156
player_id: cpu_0
player_name: Diego
action: draw_deck
card_rank: 9
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: 93ebe700-df21-4702-a110-9f5207c3ee4d
timestamp: 2026-01-24 18:51:49.343864
player_id: cpu_0
player_name: Diego
action: discard
card_rank: 9
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: discarded 9
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: fdc7bf41-e91f-40be-b9f9-6d57770ee1cd
timestamp: 2026-01-24 18:51:49.360647
player_id: cpu_0
player_name: River
action: take_discard
card_rank: 4
card_suit: diamonds
decision_reason: took 4 from discard
hand_json:
[{"rank": "5", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}]

visible_opponents_json:
{"Maya": [{"rank": "3", "suit": "hearts"}, {"rank": "8", "suit": "clubs"}], "Sage": [{"rank": "6", "suit": "hearts"}, {"rank": "8", "suit": "hearts"}], "Kenji": [{"rank": "9", "suit": "hearts"}, {"rank": "K", "suit": "clubs"}]}


game_id: fdc7bf41-e91f-40be-b9f9-6d57770ee1cd
timestamp: 2026-01-24 18:51:49.366521
player_id: cpu_0
player_name: River
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: swapped 4 for J at pos 4
hand_json:
[{"rank": "5", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}]

visible_opponents_json:
{"Maya": [{"rank": "3", "suit": "hearts"}, {"rank": "8", "suit": "clubs"}], "Sage": [{"rank": "6", "suit": "hearts"}, {"rank": "8", "suit": "hearts"}], "Kenji": [{"rank": "9", "suit": "hearts"}, {"rank": "K", "suit": "clubs"}]}


game_id: fdc7bf41-e91f-40be-b9f9-6d57770ee1cd
timestamp: 2026-01-24 18:51:49.372662
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: 8
card_suit: spades
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": true}]

visible_opponents_json:
{"River": [{"rank": "9", "suit": "clubs"}, {"rank": "4", "suit": "diamonds"}], "Sage": [{"rank": "6", "suit": "hearts"}, {"rank": "8", "suit": "hearts"}], "Kenji": [{"rank": "9", "suit": "hearts"}, {"rank": "K", "suit": "clubs"}]}


game_id: fdc7bf41-e91f-40be-b9f9-6d57770ee1cd
timestamp: 2026-01-24 18:51:49.378282
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 8
card_suit: spades
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped 8 for 7 at pos 2
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": true}]

visible_opponents_json:
{"River": [{"rank": "9", "suit": "clubs"}, {"rank": "4", "suit": "diamonds"}], "Sage": [{"rank": "6", "suit": "hearts"}, {"rank": "8", "suit": "hearts"}], "Kenji": [{"rank": "9", "suit": "hearts"}, {"rank": "K", "suit": "clubs"}]}


game_id: fdc7bf41-e91f-40be-b9f9-6d57770ee1cd
timestamp: 2026-01-24 18:51:49.384600
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}]

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


game_id: fdc7bf41-e91f-40be-b9f9-6d57770ee1cd
timestamp: 2026-01-24 18:51:49.390655
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: swapped 6 for Q at pos 4
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": true}]

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


game_id: fdc7bf41-e91f-40be-b9f9-6d57770ee1cd
timestamp: 2026-01-24 18:51:49.396619
player_id: cpu_3
player_name: Kenji
action: draw_deck
card_rank: J
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "9", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}]

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


game_id: fdc7bf41-e91f-40be-b9f9-6d57770ee1cd
timestamp: 2026-01-24 18:51:49.409563
player_id: cpu_0
player_name: River
action: draw_deck
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}]

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


game_id: fdc7bf41-e91f-40be-b9f9-6d57770ee1cd
timestamp: 2026-01-24 18:51:49.416072
player_id: cpu_0
player_name: River
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 4 for 6 at pos 1
hand_json:
[{"rank": "5", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}]

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


game_id: fdc7bf41-e91f-40be-b9f9-6d57770ee1cd
timestamp: 2026-01-24 18:51:49.422350
player_id: cpu_1
player_name: Maya
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": true}]

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


game_id: fdc7bf41-e91f-40be-b9f9-6d57770ee1cd
timestamp: 2026-01-24 18:51:49.428199
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: swapped 6 for 8 at pos 2
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": true}]

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


game_id: fdc7bf41-e91f-40be-b9f9-6d57770ee1cd
timestamp: 2026-01-24 18:51:49.433989
player_id: cpu_2
player_name: Sage
action: take_discard
card_rank: 8
card_suit: spades
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: took 8 from discard
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": true}]

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


game_id: fdc7bf41-e91f-40be-b9f9-6d57770ee1cd
timestamp: 2026-01-24 18:51:49.439818
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 8
card_suit: spades
discard_top_json: {"rank": "A", "suit": "spades"}
decision_reason: swapped 8 for A at pos 2
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": true}]

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


game_id: fdc7bf41-e91f-40be-b9f9-6d57770ee1cd
timestamp: 2026-01-24 18:51:49.446192
player_id: cpu_3
player_name: Kenji
action: take_discard
card_rank: A
card_suit: spades
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: took A from discard
hand_json:
[{"rank": "9", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}]

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


game_id: fdc7bf41-e91f-40be-b9f9-6d57770ee1cd
timestamp: 2026-01-24 18:51:49.452127
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: A
card_suit: spades
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: swapped A for 9 at pos 0
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}]

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


game_id: fdc7bf41-e91f-40be-b9f9-6d57770ee1cd
timestamp: 2026-01-24 18:51:49.458064
player_id: cpu_0
player_name: River
action: take_discard
card_rank: 9
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: took 9 from discard
hand_json:
[{"rank": "5", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}]

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


game_id: fdc7bf41-e91f-40be-b9f9-6d57770ee1cd
timestamp: 2026-01-24 18:51:49.463687
player_id: cpu_0
player_name: River
action: swap
card_rank: 9
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: swapped 9 for 10 at pos 5
hand_json:
[{"rank": "5", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": true}]

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


game_id: fdc7bf41-e91f-40be-b9f9-6d57770ee1cd
timestamp: 2026-01-24 18:51:49.468965
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: J
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": true}]

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


game_id: fdc7bf41-e91f-40be-b9f9-6d57770ee1cd
timestamp: 2026-01-24 18:51:49.481164
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": true}]

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


game_id: fdc7bf41-e91f-40be-b9f9-6d57770ee1cd
timestamp: 2026-01-24 18:51:49.487196
player_id: cpu_2
player_name: Sage
action: swap
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: swapped A for 8 at pos 2
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": true}]

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


game_id: fdc7bf41-e91f-40be-b9f9-6d57770ee1cd
timestamp: 2026-01-24 18:51:49.492920
player_id: cpu_3
player_name: Kenji
action: draw_deck
card_rank: Q
card_suit: spades
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}]

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


game_id: fdc7bf41-e91f-40be-b9f9-6d57770ee1cd
timestamp: 2026-01-24 18:51:49.498202
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: Q
card_suit: spades
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped Q for 7 at pos 2
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}]

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


game_id: fdc7bf41-e91f-40be-b9f9-6d57770ee1cd
timestamp: 2026-01-24 18:51:49.504504
player_id: cpu_0
player_name: River
action: take_discard
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "5", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": true}]

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


game_id: fdc7bf41-e91f-40be-b9f9-6d57770ee1cd
timestamp: 2026-01-24 18:51:49.510592
player_id: cpu_0
player_name: River
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: swapped 7 for 9 at pos 2
hand_json:
[{"rank": "5", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": true}]

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


game_id: fdc7bf41-e91f-40be-b9f9-6d57770ee1cd
timestamp: 2026-01-24 18:51:49.516587
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: 10
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"River": [{"rank": "4", "suit": "hearts"}, {"rank": "7", "suit": "hearts"}, {"rank": "4", "suit": "diamonds"}, {"rank": "9", "suit": "hearts"}], "Sage": [{"rank": "6", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}, {"rank": "6", "suit": "spades"}, {"rank": "8", "suit": "hearts"}], "Kenji": [{"rank": "A", "suit": "spades"}, {"rank": "Q", "suit": "spades"}, {"rank": "K", "suit": "clubs"}]}


game_id: fdc7bf41-e91f-40be-b9f9-6d57770ee1cd
timestamp: 2026-01-24 18:51:49.528625
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": true}]

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


game_id: fdc7bf41-e91f-40be-b9f9-6d57770ee1cd
timestamp: 2026-01-24 18:51:49.537808
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: swapped 2 for 8 at pos 5
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: fdc7bf41-e91f-40be-b9f9-6d57770ee1cd
timestamp: 2026-01-24 18:51:49.543574
player_id: cpu_3
player_name: Kenji
action: take_discard
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: took 8 from discard
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}]

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


game_id: fdc7bf41-e91f-40be-b9f9-6d57770ee1cd
timestamp: 2026-01-24 18:51:49.549227
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: swapped 8 for Q at pos 2
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}]

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


game_id: fdc7bf41-e91f-40be-b9f9-6d57770ee1cd
timestamp: 2026-01-24 18:51:49.554841
player_id: cpu_0
player_name: River
action: draw_deck
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": true}]

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


game_id: fdc7bf41-e91f-40be-b9f9-6d57770ee1cd
timestamp: 2026-01-24 18:51:49.560174
player_id: cpu_0
player_name: River
action: swap
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: swapped A for 9 at pos 5
hand_json:
[{"rank": "5", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: fdc7bf41-e91f-40be-b9f9-6d57770ee1cd
timestamp: 2026-01-24 18:51:49.565891
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: 10
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"River": [{"rank": "4", "suit": "hearts"}, {"rank": "7", "suit": "hearts"}, {"rank": "4", "suit": "diamonds"}, {"rank": "A", "suit": "diamonds"}], "Sage": [{"rank": "6", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}, {"rank": "6", "suit": "spades"}, {"rank": "2", "suit": "clubs"}], "Kenji": [{"rank": "A", "suit": "spades"}, {"rank": "8", "suit": "hearts"}, {"rank": "K", "suit": "clubs"}]}


game_id: fdc7bf41-e91f-40be-b9f9-6d57770ee1cd
timestamp: 2026-01-24 18:51:49.580308
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: fdc7bf41-e91f-40be-b9f9-6d57770ee1cd
timestamp: 2026-01-24 18:51:49.586256
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped 3 for 6 at pos 1
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: fdc7bf41-e91f-40be-b9f9-6d57770ee1cd
timestamp: 2026-01-24 18:51:49.592926
player_id: cpu_3
player_name: Kenji
action: take_discard
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}]

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


game_id: fdc7bf41-e91f-40be-b9f9-6d57770ee1cd
timestamp: 2026-01-24 18:51:49.599155
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: swapped 6 for 8 at pos 2
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}]

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


game_id: fdc7bf41-e91f-40be-b9f9-6d57770ee1cd
timestamp: 2026-01-24 18:51:49.605105
player_id: cpu_0
player_name: River
action: draw_deck
card_rank: 8
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: fdc7bf41-e91f-40be-b9f9-6d57770ee1cd
timestamp: 2026-01-24 18:51:49.617384
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: J
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"River": [{"rank": "4", "suit": "hearts"}, {"rank": "7", "suit": "hearts"}, {"rank": "4", "suit": "diamonds"}, {"rank": "A", "suit": "diamonds"}], "Sage": [{"rank": "3", "suit": "spades"}, {"rank": "A", "suit": "clubs"}, {"rank": "6", "suit": "spades"}, {"rank": "2", "suit": "clubs"}], "Kenji": [{"rank": "A", "suit": "spades"}, {"rank": "6", "suit": "hearts"}, {"rank": "K", "suit": "clubs"}]}


game_id: fdc7bf41-e91f-40be-b9f9-6d57770ee1cd
timestamp: 2026-01-24 18:51:49.630291
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: fdc7bf41-e91f-40be-b9f9-6d57770ee1cd
timestamp: 2026-01-24 18:51:49.636497
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped 3 for 6 at pos 4
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: fdc7bf41-e91f-40be-b9f9-6d57770ee1cd
timestamp: 2026-01-24 18:51:49.642440
player_id: cpu_3
player_name: Kenji
action: take_discard
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}]

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


game_id: fdc7bf41-e91f-40be-b9f9-6d57770ee1cd
timestamp: 2026-01-24 18:51:49.648398
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: swapped 6 for 9 at pos 5
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}]

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


game_id: fdc7bf41-e91f-40be-b9f9-6d57770ee1cd
timestamp: 2026-01-24 18:51:49.654605
player_id: cpu_0
player_name: River
action: draw_deck
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Maya": [{"rank": "3", "suit": "hearts"}, {"rank": "6", "suit": "clubs"}, {"rank": "8", "suit": "clubs"}], "Sage": [{"rank": "3", "suit": "spades"}, {"rank": "A", "suit": "clubs"}, {"rank": "3", "suit": "diamonds"}, {"rank": "2", "suit": "clubs"}], "Kenji": [{"rank": "A", "suit": "spades"}, {"rank": "6", "suit": "hearts"}, {"rank": "K", "suit": "clubs"}, {"rank": "6", "suit": "spades"}]}


game_id: fdc7bf41-e91f-40be-b9f9-6d57770ee1cd
timestamp: 2026-01-24 18:51:49.660392
player_id: cpu_0
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 2
hand_json:
[{"rank": "5", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: fdc7bf41-e91f-40be-b9f9-6d57770ee1cd
timestamp: 2026-01-24 18:51:49.666085
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"River": [{"rank": "4", "suit": "hearts"}, {"rank": "6", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}, {"rank": "A", "suit": "diamonds"}], "Sage": [{"rank": "3", "suit": "spades"}, {"rank": "A", "suit": "clubs"}, {"rank": "3", "suit": "diamonds"}, {"rank": "2", "suit": "clubs"}], "Kenji": [{"rank": "A", "suit": "spades"}, {"rank": "6", "suit": "hearts"}, {"rank": "K", "suit": "clubs"}, {"rank": "6", "suit": "spades"}]}


game_id: fdc7bf41-e91f-40be-b9f9-6d57770ee1cd
timestamp: 2026-01-24 18:51:49.671873
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: swapped 2 for 8 at pos 5
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: fdc7bf41-e91f-40be-b9f9-6d57770ee1cd
timestamp: 2026-01-24 18:51:49.678187
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: fdc7bf41-e91f-40be-b9f9-6d57770ee1cd
timestamp: 2026-01-24 18:51:49.683953
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped 5 for 5 at pos 3
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: fdc7bf41-e91f-40be-b9f9-6d57770ee1cd
timestamp: 2026-01-24 18:51:49.689819
player_id: cpu_3
player_name: Kenji
action: draw_deck
card_rank: 9
card_suit: spades
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}]

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


game_id: fdc7bf41-e91f-40be-b9f9-6d57770ee1cd
timestamp: 2026-01-24 18:51:49.701483
player_id: cpu_0
player_name: River
action: draw_deck
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: fdc7bf41-e91f-40be-b9f9-6d57770ee1cd
timestamp: 2026-01-24 18:51:49.707919
player_id: cpu_0
player_name: River
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped A for 6 at pos 2
hand_json:
[{"rank": "5", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: fdc7bf41-e91f-40be-b9f9-6d57770ee1cd
timestamp: 2026-01-24 18:51:49.713426
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: fdc7bf41-e91f-40be-b9f9-6d57770ee1cd
timestamp: 2026-01-24 18:51:49.719427
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: swapped 3 for Q at pos 3
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: fdc7bf41-e91f-40be-b9f9-6d57770ee1cd
timestamp: 2026-01-24 18:51:49.725957
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: fdc7bf41-e91f-40be-b9f9-6d57770ee1cd
timestamp: 2026-01-24 18:51:49.731901
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped 4 for 5 at pos 3
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: fdc7bf41-e91f-40be-b9f9-6d57770ee1cd
timestamp: 2026-01-24 18:51:49.737743
player_id: cpu_3
player_name: Kenji
action: draw_deck
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"River": [{"rank": "4", "suit": "hearts"}, {"rank": "A", "suit": "hearts"}, {"rank": "4", "suit": "diamonds"}, {"rank": "A", "suit": "diamonds"}], "Maya": [{"rank": "3", "suit": "hearts"}, {"rank": "6", "suit": "clubs"}, {"rank": "3", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}], "Sage": [{"rank": "3", "suit": "spades"}, {"rank": "A", "suit": "clubs"}, {"rank": "4", "suit": "clubs"}, {"rank": "3", "suit": "diamonds"}, {"rank": "2", "suit": "clubs"}]}


game_id: fdc7bf41-e91f-40be-b9f9-6d57770ee1cd
timestamp: 2026-01-24 18:51:49.743512
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped 4 for 6 at pos 2
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}]

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


game_id: fdc7bf41-e91f-40be-b9f9-6d57770ee1cd
timestamp: 2026-01-24 18:51:49.748986
player_id: cpu_0
player_name: River
action: draw_deck
card_rank: K
card_suit: spades
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: fdc7bf41-e91f-40be-b9f9-6d57770ee1cd
timestamp: 2026-01-24 18:51:49.754761
player_id: cpu_0
player_name: River
action: swap
card_rank: K
card_suit: spades
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: swapped K for 4 at pos 1
hand_json:
[{"rank": "5", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: fdc7bf41-e91f-40be-b9f9-6d57770ee1cd
timestamp: 2026-01-24 18:51:49.760785
player_id: cpu_1
player_name: Maya
action: take_discard
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: fdc7bf41-e91f-40be-b9f9-6d57770ee1cd
timestamp: 2026-01-24 18:51:49.766882
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 4 for 6 at pos 2
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: fdc7bf41-e91f-40be-b9f9-6d57770ee1cd
timestamp: 2026-01-24 18:51:49.772989
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: fdc7bf41-e91f-40be-b9f9-6d57770ee1cd
timestamp: 2026-01-24 18:51:49.785011
player_id: cpu_3
player_name: Kenji
action: draw_deck
card_rank: Q
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}]

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


game_id: fdc7bf41-e91f-40be-b9f9-6d57770ee1cd
timestamp: 2026-01-24 18:51:49.797356
player_id: cpu_0
player_name: River
action: draw_deck
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: fdc7bf41-e91f-40be-b9f9-6d57770ee1cd
timestamp: 2026-01-24 18:51:49.839808
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped 5 for 6 at pos 5
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}]


game_id: fdc7bf41-e91f-40be-b9f9-6d57770ee1cd
timestamp: 2026-01-24 18:51:49.846677
player_id: cpu_0
player_name: River
action: draw_deck
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Maya": [{"rank": "3", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}], "Sage": [{"rank": "3", "suit": "spades"}, {"rank": "A", "suit": "clubs"}, {"rank": "4", "suit": "clubs"}, {"rank": "3", "suit": "diamonds"}, {"rank": "2", "suit": "clubs"}], "Kenji": [{"rank": "A", "suit": "spades"}, {"rank": "4", "suit": "spades"}, {"rank": "K", "suit": "clubs"}, {"rank": "5", "suit": "clubs"}]}


game_id: fdc7bf41-e91f-40be-b9f9-6d57770ee1cd
timestamp: 2026-01-24 18:51:49.859062
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: Q
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"River": [{"rank": "K", "suit": "spades"}, {"rank": "A", "suit": "hearts"}, {"rank": "4", "suit": "diamonds"}, {"rank": "A", "suit": "diamonds"}], "Sage": [{"rank": "3", "suit": "spades"}, {"rank": "A", "suit": "clubs"}, {"rank": "4", "suit": "clubs"}, {"rank": "3", "suit": "diamonds"}, {"rank": "2", "suit": "clubs"}], "Kenji": [{"rank": "A", "suit": "spades"}, {"rank": "4", "suit": "spades"}, {"rank": "K", "suit": "clubs"}, {"rank": "5", "suit": "clubs"}]}


game_id: fdc7bf41-e91f-40be-b9f9-6d57770ee1cd
timestamp: 2026-01-24 18:51:49.870424
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: Q
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"River": [{"rank": "K", "suit": "spades"}, {"rank": "A", "suit": "hearts"}, {"rank": "4", "suit": "diamonds"}, {"rank": "A", "suit": "diamonds"}], "Maya": [{"rank": "3", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}], "Kenji": [{"rank": "A", "suit": "spades"}, {"rank": "4", "suit": "spades"}, {"rank": "K", "suit": "clubs"}, {"rank": "5", "suit": "clubs"}]}


game_id: fdc7bf41-e91f-40be-b9f9-6d57770ee1cd
timestamp: 2026-01-24 18:51:49.887516
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 10
card_suit: diamonds
discard_top_json: {"rank": "2", "suit": "spades"}
decision_reason: swapped 10 for 2 at pos 1
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}]


game_id: fdc7bf41-e91f-40be-b9f9-6d57770ee1cd
timestamp: 2026-01-24 18:51:49.892942
player_id: cpu_0
player_name: River
action: take_discard
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took 2 from discard
visible_opponents_json:
{"Maya": [{"rank": "3", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}], "Sage": [{"rank": "3", "suit": "spades"}, {"rank": "A", "suit": "clubs"}, {"rank": "4", "suit": "clubs"}, {"rank": "3", "suit": "diamonds"}, {"rank": "2", "suit": "clubs"}], "Kenji": [{"rank": "A", "suit": "spades"}, {"rank": "10", "suit": "diamonds"}, {"rank": "4", "suit": "spades"}, {"rank": "K", "suit": "clubs"}, {"rank": "5", "suit": "clubs"}]}


game_id: fdc7bf41-e91f-40be-b9f9-6d57770ee1cd
timestamp: 2026-01-24 18:51:49.898664
player_id: cpu_0
player_name: River
action: swap
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: swapped 2 for 4 at pos 4
hand_json:
[{"rank": "5", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: fdc7bf41-e91f-40be-b9f9-6d57770ee1cd
timestamp: 2026-01-24 18:51:49.904452
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: 10
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"River": [{"rank": "K", "suit": "spades"}, {"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "spades"}, {"rank": "A", "suit": "diamonds"}], "Sage": [{"rank": "3", "suit": "spades"}, {"rank": "A", "suit": "clubs"}, {"rank": "4", "suit": "clubs"}, {"rank": "3", "suit": "diamonds"}, {"rank": "2", "suit": "clubs"}], "Kenji": [{"rank": "A", "suit": "spades"}, {"rank": "10", "suit": "diamonds"}, {"rank": "4", "suit": "spades"}, {"rank": "K", "suit": "clubs"}, {"rank": "5", "suit": "clubs"}]}


game_id: fdc7bf41-e91f-40be-b9f9-6d57770ee1cd
timestamp: 2026-01-24 18:51:49.910447
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 10
card_suit: clubs
discard_top_json: {"rank": "2", "suit": "hearts"}
decision_reason: swapped 10 for 2 at pos 4
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: fdc7bf41-e91f-40be-b9f9-6d57770ee1cd
timestamp: 2026-01-24 18:51:49.916407
player_id: cpu_2
player_name: Sage
action: take_discard
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: took 2 from discard
visible_opponents_json:
{"River": [{"rank": "K", "suit": "spades"}, {"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "spades"}, {"rank": "A", "suit": "diamonds"}], "Maya": [{"rank": "3", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}, {"rank": "10", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}], "Kenji": [{"rank": "A", "suit": "spades"}, {"rank": "10", "suit": "diamonds"}, {"rank": "4", "suit": "spades"}, {"rank": "K", "suit": "clubs"}, {"rank": "5", "suit": "clubs"}]}


game_id: fdc7bf41-e91f-40be-b9f9-6d57770ee1cd
timestamp: 2026-01-24 18:51:49.922796
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: swapped 2 for 4 at pos 3
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: fdc7bf41-e91f-40be-b9f9-6d57770ee1cd
timestamp: 2026-01-24 18:51:49.929055
player_id: cpu_3
player_name: Kenji
action: take_discard
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: fdc7bf41-e91f-40be-b9f9-6d57770ee1cd
timestamp: 2026-01-24 18:51:49.939164
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: swapped 4 for 10 at pos 1
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: fdc7bf41-e91f-40be-b9f9-6d57770ee1cd
timestamp: 2026-01-24 18:51:49.945111
player_id: cpu_0
player_name: River
action: draw_deck
card_rank: 8
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: fdc7bf41-e91f-40be-b9f9-6d57770ee1cd
timestamp: 2026-01-24 18:51:49.958180
player_id: cpu_1
player_name: Maya
action: take_discard
card_rank: 8
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: took 8 from discard
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: fdc7bf41-e91f-40be-b9f9-6d57770ee1cd
timestamp: 2026-01-24 18:51:49.964037
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 8
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: swapped 8 for 10 at pos 4
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: fdc7bf41-e91f-40be-b9f9-6d57770ee1cd
timestamp: 2026-01-24 18:51:49.972232
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: 8
card_suit: spades
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: fdc7bf41-e91f-40be-b9f9-6d57770ee1cd
timestamp: 2026-01-24 18:51:49.983714
player_id: cpu_3
player_name: Kenji
action: draw_deck
card_rank: J
card_suit: spades
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: fdc7bf41-e91f-40be-b9f9-6d57770ee1cd
timestamp: 2026-01-24 18:51:49.995434
player_id: cpu_0
player_name: River
action: draw_deck
card_rank: J
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Maya": [{"rank": "3", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}, {"rank": "8", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}], "Sage": [{"rank": "3", "suit": "spades"}, {"rank": "A", "suit": "clubs"}, {"rank": "2", "suit": "hearts"}, {"rank": "3", "suit": "diamonds"}, {"rank": "2", "suit": "clubs"}], "Kenji": [{"rank": "A", "suit": "spades"}, {"rank": "4", "suit": "clubs"}, {"rank": "4", "suit": "spades"}, {"rank": "K", "suit": "clubs"}, {"rank": "5", "suit": "clubs"}]}


game_id: fdc7bf41-e91f-40be-b9f9-6d57770ee1cd
timestamp: 2026-01-24 18:51:50.013149
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 8
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: swapped 8 for 10 at pos 1
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}]


game_id: fdc7bf41-e91f-40be-b9f9-6d57770ee1cd
timestamp: 2026-01-24 18:51:50.018935
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"River": [{"rank": "K", "suit": "spades"}, {"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "spades"}, {"rank": "A", "suit": "diamonds"}], "Maya": [{"rank": "3", "suit": "hearts"}, {"rank": "8", "suit": "diamonds"}, {"rank": "4", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}, {"rank": "8", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}], "Kenji": [{"rank": "A", "suit": "spades"}, {"rank": "4", "suit": "clubs"}, {"rank": "4", "suit": "spades"}, {"rank": "K", "suit": "clubs"}, {"rank": "5", "suit": "clubs"}]}


game_id: fdc7bf41-e91f-40be-b9f9-6d57770ee1cd
timestamp: 2026-01-24 18:51:50.024552
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "K", "suit": "diamonds"}
decision_reason: swapped 6 for K at pos 0
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: fdc7bf41-e91f-40be-b9f9-6d57770ee1cd
timestamp: 2026-01-24 18:51:50.030371
player_id: cpu_3
player_name: Kenji
action: take_discard
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: took K from discard
visible_opponents_json:
{"River": [{"rank": "K", "suit": "spades"}, {"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "spades"}, {"rank": "A", "suit": "diamonds"}], "Maya": [{"rank": "3", "suit": "hearts"}, {"rank": "8", "suit": "diamonds"}, {"rank": "4", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}, {"rank": "8", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}], "Sage": [{"rank": "6", "suit": "hearts"}, {"rank": "3", "suit": "spades"}, {"rank": "A", "suit": "clubs"}, {"rank": "2", "suit": "hearts"}, {"rank": "3", "suit": "diamonds"}, {"rank": "2", "suit": "clubs"}]}


game_id: fdc7bf41-e91f-40be-b9f9-6d57770ee1cd
timestamp: 2026-01-24 18:51:50.036486
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped K for 5 at pos 5
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: fdc7bf41-e91f-40be-b9f9-6d57770ee1cd
timestamp: 2026-01-24 18:51:50.042834
player_id: cpu_0
player_name: River
action: draw_deck
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Maya": [{"rank": "3", "suit": "hearts"}, {"rank": "8", "suit": "diamonds"}, {"rank": "4", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}, {"rank": "8", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}], "Sage": [{"rank": "6", "suit": "hearts"}, {"rank": "3", "suit": "spades"}, {"rank": "A", "suit": "clubs"}, {"rank": "2", "suit": "hearts"}, {"rank": "3", "suit": "diamonds"}, {"rank": "2", "suit": "clubs"}], "Kenji": [{"rank": "A", "suit": "spades"}, {"rank": "4", "suit": "clubs"}, {"rank": "4", "suit": "spades"}, {"rank": "K", "suit": "clubs"}, {"rank": "K", "suit": "diamonds"}]}


game_id: fdc7bf41-e91f-40be-b9f9-6d57770ee1cd
timestamp: 2026-01-24 18:51:50.049238
player_id: cpu_0
player_name: River
action: discard
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: discarded 7
hand_json:
[{"rank": "5", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: 3aaa5b68-d292-4aa5-82cc-4edb1ba71b5c
timestamp: 2026-01-24 18:51:50.067549
player_id: cpu_0
player_name: Priya
action: take_discard
card_rank: 2
card_suit: diamonds
decision_reason: took 2 from discard
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": true}]

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


game_id: 3aaa5b68-d292-4aa5-82cc-4edb1ba71b5c
timestamp: 2026-01-24 18:51:50.073938
player_id: cpu_0
player_name: Priya
action: swap
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: swapped 2 for Q at pos 5
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: 3aaa5b68-d292-4aa5-82cc-4edb1ba71b5c
timestamp: 2026-01-24 18:51:50.080620
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}]

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


game_id: 3aaa5b68-d292-4aa5-82cc-4edb1ba71b5c
timestamp: 2026-01-24 18:51:50.086222
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: swapped 6 for 9 at pos 4
hand_json:
[{"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}]

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


game_id: 3aaa5b68-d292-4aa5-82cc-4edb1ba71b5c
timestamp: 2026-01-24 18:51:50.091667
player_id: cpu_2
player_name: Sofia
action: draw_deck
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}]

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


game_id: 3aaa5b68-d292-4aa5-82cc-4edb1ba71b5c
timestamp: 2026-01-24 18:51:50.097169
player_id: cpu_2
player_name: Sofia
action: swap
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: swapped 3 for 10 at pos 2
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}]

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


game_id: 3aaa5b68-d292-4aa5-82cc-4edb1ba71b5c
timestamp: 2026-01-24 18:51:50.102822
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}]

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


game_id: 3aaa5b68-d292-4aa5-82cc-4edb1ba71b5c
timestamp: 2026-01-24 18:51:50.108551
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: swapped 4 for Q at pos 3
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}]

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


game_id: 3aaa5b68-d292-4aa5-82cc-4edb1ba71b5c
timestamp: 2026-01-24 18:51:50.114134
player_id: cpu_0
player_name: Priya
action: draw_deck
card_rank: J
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: 3aaa5b68-d292-4aa5-82cc-4edb1ba71b5c
timestamp: 2026-01-24 18:51:50.126185
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: Q
card_suit: spades
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}]

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


game_id: 3aaa5b68-d292-4aa5-82cc-4edb1ba71b5c
timestamp: 2026-01-24 18:51:50.138079
player_id: cpu_2
player_name: Sofia
action: draw_deck
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}]

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


game_id: 3aaa5b68-d292-4aa5-82cc-4edb1ba71b5c
timestamp: 2026-01-24 18:51:50.144154
player_id: cpu_2
player_name: Sofia
action: swap
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped A for 7 at pos 4
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}]

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


game_id: 3aaa5b68-d292-4aa5-82cc-4edb1ba71b5c
timestamp: 2026-01-24 18:51:50.149952
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 9
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}]

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


game_id: 3aaa5b68-d292-4aa5-82cc-4edb1ba71b5c
timestamp: 2026-01-24 18:51:50.161871
player_id: cpu_0
player_name: Priya
action: draw_deck
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Maya": [{"rank": "K", "suit": "spades"}, {"rank": "6", "suit": "diamonds"}], "Sofia": [{"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}], "Marcus": [{"rank": "4", "suit": "clubs"}, {"rank": "4", "suit": "diamonds"}, {"rank": "6", "suit": "spades"}]}


game_id: 3aaa5b68-d292-4aa5-82cc-4edb1ba71b5c
timestamp: 2026-01-24 18:51:50.172864
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Priya": [{"rank": "4", "suit": "spades"}, {"rank": "2", "suit": "diamonds"}], "Sofia": [{"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}], "Marcus": [{"rank": "4", "suit": "clubs"}, {"rank": "4", "suit": "diamonds"}, {"rank": "6", "suit": "spades"}]}


game_id: 3aaa5b68-d292-4aa5-82cc-4edb1ba71b5c
timestamp: 2026-01-24 18:51:50.178693
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped 5 for 6 at pos 4
hand_json:
[{"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}]

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


game_id: 3aaa5b68-d292-4aa5-82cc-4edb1ba71b5c
timestamp: 2026-01-24 18:51:50.184666
player_id: cpu_2
player_name: Sofia
action: draw_deck
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}]

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


game_id: 3aaa5b68-d292-4aa5-82cc-4edb1ba71b5c
timestamp: 2026-01-24 18:51:50.190504
player_id: cpu_2
player_name: Sofia
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: swapped 3 for 10 at pos 5
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 3aaa5b68-d292-4aa5-82cc-4edb1ba71b5c
timestamp: 2026-01-24 18:51:50.197039
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Priya": [{"rank": "4", "suit": "spades"}, {"rank": "2", "suit": "diamonds"}], "Maya": [{"rank": "K", "suit": "spades"}, {"rank": "5", "suit": "clubs"}], "Sofia": [{"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}, {"rank": "3", "suit": "spades"}]}


game_id: 3aaa5b68-d292-4aa5-82cc-4edb1ba71b5c
timestamp: 2026-01-24 18:51:50.202983
player_id: cpu_3
player_name: Marcus
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": "4", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}]

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


game_id: 3aaa5b68-d292-4aa5-82cc-4edb1ba71b5c
timestamp: 2026-01-24 18:51:50.209362
player_id: cpu_0
player_name: Priya
action: draw_deck
card_rank: J
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Maya": [{"rank": "K", "suit": "spades"}, {"rank": "5", "suit": "clubs"}], "Sofia": [{"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}, {"rank": "3", "suit": "spades"}], "Marcus": [{"rank": "4", "suit": "clubs"}, {"rank": "4", "suit": "diamonds"}, {"rank": "K", "suit": "hearts"}]}


game_id: 3aaa5b68-d292-4aa5-82cc-4edb1ba71b5c
timestamp: 2026-01-24 18:51:50.222074
player_id: cpu_1
player_name: Maya
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": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}]

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


game_id: 3aaa5b68-d292-4aa5-82cc-4edb1ba71b5c
timestamp: 2026-01-24 18:51:50.234848
player_id: cpu_2
player_name: Sofia
action: draw_deck
card_rank: 8
card_suit: spades
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 3aaa5b68-d292-4aa5-82cc-4edb1ba71b5c
timestamp: 2026-01-24 18:51:50.264419
player_id: cpu_0
player_name: Priya
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "K", "suit": "clubs"}
decision_reason: swapped 4 for K at pos 3
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}]


game_id: 3aaa5b68-d292-4aa5-82cc-4edb1ba71b5c
timestamp: 2026-01-24 18:51:50.270993
player_id: cpu_1
player_name: Maya
action: take_discard
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: took K from discard
visible_opponents_json:
{"Priya": [{"rank": "4", "suit": "spades"}, {"rank": "4", "suit": "hearts"}, {"rank": "2", "suit": "diamonds"}], "Sofia": [{"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}, {"rank": "3", "suit": "spades"}], "Marcus": [{"rank": "4", "suit": "clubs"}, {"rank": "4", "suit": "diamonds"}, {"rank": "K", "suit": "hearts"}]}


game_id: 3aaa5b68-d292-4aa5-82cc-4edb1ba71b5c
timestamp: 2026-01-24 18:51:50.276844
player_id: cpu_1
player_name: Maya
action: swap
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped K for 5 at pos 4
hand_json:
[{"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}]

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


game_id: 3aaa5b68-d292-4aa5-82cc-4edb1ba71b5c
timestamp: 2026-01-24 18:51:50.283405
player_id: cpu_2
player_name: Sofia
action: draw_deck
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Priya": [{"rank": "4", "suit": "spades"}, {"rank": "4", "suit": "hearts"}, {"rank": "2", "suit": "diamonds"}], "Maya": [{"rank": "K", "suit": "spades"}, {"rank": "K", "suit": "clubs"}], "Marcus": [{"rank": "4", "suit": "clubs"}, {"rank": "4", "suit": "diamonds"}, {"rank": "K", "suit": "hearts"}]}


game_id: 3aaa5b68-d292-4aa5-82cc-4edb1ba71b5c
timestamp: 2026-01-24 18:51:50.295115
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Priya": [{"rank": "4", "suit": "spades"}, {"rank": "4", "suit": "hearts"}, {"rank": "2", "suit": "diamonds"}], "Maya": [{"rank": "K", "suit": "spades"}, {"rank": "K", "suit": "clubs"}], "Sofia": [{"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}, {"rank": "3", "suit": "spades"}]}


game_id: 3aaa5b68-d292-4aa5-82cc-4edb1ba71b5c
timestamp: 2026-01-24 18:51:50.301051
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: swapped 2 for 4 at pos 0
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}]

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


game_id: 3aaa5b68-d292-4aa5-82cc-4edb1ba71b5c
timestamp: 2026-01-24 18:51:50.306831
player_id: cpu_0
player_name: Priya
action: draw_deck
card_rank: J
card_suit: spades
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: 3aaa5b68-d292-4aa5-82cc-4edb1ba71b5c
timestamp: 2026-01-24 18:51:50.319645
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: 7
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": "2", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}]

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


game_id: 3aaa5b68-d292-4aa5-82cc-4edb1ba71b5c
timestamp: 2026-01-24 18:51:50.331315
player_id: cpu_2
player_name: Sofia
action: draw_deck
card_rank: 9
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Priya": [{"rank": "4", "suit": "spades"}, {"rank": "4", "suit": "hearts"}, {"rank": "2", "suit": "diamonds"}], "Maya": [{"rank": "K", "suit": "spades"}, {"rank": "K", "suit": "clubs"}], "Marcus": [{"rank": "2", "suit": "hearts"}, {"rank": "4", "suit": "diamonds"}, {"rank": "K", "suit": "hearts"}]}


game_id: 3aaa5b68-d292-4aa5-82cc-4edb1ba71b5c
timestamp: 2026-01-24 18:51:50.363054
player_id: cpu_0
player_name: Priya
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "4", "suit": "spades"}
decision_reason: swapped A for 4 at pos 0
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}]


game_id: 3aaa5b68-d292-4aa5-82cc-4edb1ba71b5c
timestamp: 2026-01-24 18:51:50.368951
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "4", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Priya": [{"rank": "A", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}, {"rank": "2", "suit": "diamonds"}], "Sofia": [{"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}, {"rank": "3", "suit": "spades"}], "Marcus": [{"rank": "2", "suit": "hearts"}, {"rank": "4", "suit": "diamonds"}, {"rank": "K", "suit": "hearts"}]}


game_id: 3aaa5b68-d292-4aa5-82cc-4edb1ba71b5c
timestamp: 2026-01-24 18:51:50.380052
player_id: cpu_2
player_name: Sofia
action: draw_deck
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Priya": [{"rank": "A", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}, {"rank": "2", "suit": "diamonds"}], "Maya": [{"rank": "K", "suit": "spades"}, {"rank": "K", "suit": "clubs"}], "Marcus": [{"rank": "2", "suit": "hearts"}, {"rank": "4", "suit": "diamonds"}, {"rank": "K", "suit": "hearts"}]}


game_id: 3aaa5b68-d292-4aa5-82cc-4edb1ba71b5c
timestamp: 2026-01-24 18:51:50.391052
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 10
card_suit: spades
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Priya": [{"rank": "A", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}, {"rank": "2", "suit": "diamonds"}], "Maya": [{"rank": "K", "suit": "spades"}, {"rank": "K", "suit": "clubs"}], "Sofia": [{"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}, {"rank": "3", "suit": "spades"}]}


game_id: 3aaa5b68-d292-4aa5-82cc-4edb1ba71b5c
timestamp: 2026-01-24 18:51:50.420218
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: swapped 7 for 8 at pos 3
hand_json:
[{"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}]


game_id: 3aaa5b68-d292-4aa5-82cc-4edb1ba71b5c
timestamp: 2026-01-24 18:51:50.426349
player_id: cpu_2
player_name: Sofia
action: draw_deck
card_rank: Q
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Priya": [{"rank": "A", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}, {"rank": "2", "suit": "diamonds"}], "Maya": [{"rank": "K", "suit": "spades"}, {"rank": "7", "suit": "clubs"}, {"rank": "K", "suit": "clubs"}], "Marcus": [{"rank": "2", "suit": "hearts"}, {"rank": "4", "suit": "diamonds"}, {"rank": "K", "suit": "hearts"}]}


game_id: 3aaa5b68-d292-4aa5-82cc-4edb1ba71b5c
timestamp: 2026-01-24 18:51:50.439133
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Priya": [{"rank": "A", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}, {"rank": "2", "suit": "diamonds"}], "Maya": [{"rank": "K", "suit": "spades"}, {"rank": "7", "suit": "clubs"}, {"rank": "K", "suit": "clubs"}], "Sofia": [{"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}, {"rank": "3", "suit": "spades"}]}


game_id: 3aaa5b68-d292-4aa5-82cc-4edb1ba71b5c
timestamp: 2026-01-24 18:51:50.455754
player_id: cpu_0
player_name: Priya
action: draw_deck
card_rank: J
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Maya": [{"rank": "K", "suit": "spades"}, {"rank": "7", "suit": "clubs"}, {"rank": "K", "suit": "clubs"}], "Sofia": [{"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}, {"rank": "3", "suit": "spades"}], "Marcus": [{"rank": "2", "suit": "hearts"}, {"rank": "4", "suit": "diamonds"}, {"rank": "K", "suit": "hearts"}]}


game_id: 3aaa5b68-d292-4aa5-82cc-4edb1ba71b5c
timestamp: 2026-01-24 18:51:50.581827
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped 4 for 7 at pos 3
hand_json:
[{"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}]


game_id: 3aaa5b68-d292-4aa5-82cc-4edb1ba71b5c
timestamp: 2026-01-24 18:51:50.587612
player_id: cpu_2
player_name: Sofia
action: draw_deck
card_rank: J
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Priya": [{"rank": "A", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}, {"rank": "2", "suit": "diamonds"}], "Maya": [{"rank": "K", "suit": "spades"}, {"rank": "4", "suit": "clubs"}, {"rank": "K", "suit": "clubs"}], "Marcus": [{"rank": "2", "suit": "hearts"}, {"rank": "4", "suit": "diamonds"}, {"rank": "K", "suit": "hearts"}]}


game_id: 3aaa5b68-d292-4aa5-82cc-4edb1ba71b5c
timestamp: 2026-01-24 18:51:50.599197
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Priya": [{"rank": "A", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}, {"rank": "2", "suit": "diamonds"}], "Maya": [{"rank": "K", "suit": "spades"}, {"rank": "4", "suit": "clubs"}, {"rank": "K", "suit": "clubs"}], "Sofia": [{"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}, {"rank": "3", "suit": "spades"}]}


game_id: 3aaa5b68-d292-4aa5-82cc-4edb1ba71b5c
timestamp: 2026-01-24 18:51:50.612152
player_id: cpu_0
player_name: Priya
action: draw_deck
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Maya": [{"rank": "K", "suit": "spades"}, {"rank": "4", "suit": "clubs"}, {"rank": "K", "suit": "clubs"}], "Sofia": [{"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}, {"rank": "3", "suit": "spades"}], "Marcus": [{"rank": "2", "suit": "hearts"}, {"rank": "4", "suit": "diamonds"}, {"rank": "K", "suit": "hearts"}]}


game_id: 3aaa5b68-d292-4aa5-82cc-4edb1ba71b5c
timestamp: 2026-01-24 18:51:50.618003
player_id: cpu_0
player_name: Priya
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: swapped 5 for Q at pos 2
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: 3aaa5b68-d292-4aa5-82cc-4edb1ba71b5c
timestamp: 2026-01-24 18:51:50.623766
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}]

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


game_id: 3aaa5b68-d292-4aa5-82cc-4edb1ba71b5c
timestamp: 2026-01-24 18:51:50.629525
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: swapped 6 for 10 at pos 0
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}]

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


game_id: 3aaa5b68-d292-4aa5-82cc-4edb1ba71b5c
timestamp: 2026-01-24 18:51:50.635504
player_id: cpu_2
player_name: Sofia
action: draw_deck
card_rank: J
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Priya": [{"rank": "A", "suit": "hearts"}, {"rank": "5", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}, {"rank": "2", "suit": "diamonds"}], "Maya": [{"rank": "6", "suit": "spades"}, {"rank": "K", "suit": "spades"}, {"rank": "4", "suit": "clubs"}, {"rank": "K", "suit": "clubs"}], "Marcus": [{"rank": "2", "suit": "hearts"}, {"rank": "4", "suit": "diamonds"}, {"rank": "K", "suit": "hearts"}]}


game_id: 3aaa5b68-d292-4aa5-82cc-4edb1ba71b5c
timestamp: 2026-01-24 18:51:50.647247
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Priya": [{"rank": "A", "suit": "hearts"}, {"rank": "5", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}, {"rank": "2", "suit": "diamonds"}], "Maya": [{"rank": "6", "suit": "spades"}, {"rank": "K", "suit": "spades"}, {"rank": "4", "suit": "clubs"}, {"rank": "K", "suit": "clubs"}], "Sofia": [{"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}, {"rank": "3", "suit": "spades"}]}


game_id: 3aaa5b68-d292-4aa5-82cc-4edb1ba71b5c
timestamp: 2026-01-24 18:51:50.653047
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "2", "suit": "clubs"}
decision_reason: swapped 5 for 2 at pos 1
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}]

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


game_id: 3aaa5b68-d292-4aa5-82cc-4edb1ba71b5c
timestamp: 2026-01-24 18:51:50.659103
player_id: cpu_0
player_name: Priya
action: take_discard
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: took 2 from discard
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: 3aaa5b68-d292-4aa5-82cc-4edb1ba71b5c
timestamp: 2026-01-24 18:51:50.664850
player_id: cpu_0
player_name: Priya
action: swap
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped 2 for 5 at pos 2
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: 3aaa5b68-d292-4aa5-82cc-4edb1ba71b5c
timestamp: 2026-01-24 18:51:50.671083
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: 8
card_suit: spades
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}]

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


game_id: 3aaa5b68-d292-4aa5-82cc-4edb1ba71b5c
timestamp: 2026-01-24 18:51:50.684572
player_id: cpu_2
player_name: Sofia
action: draw_deck
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Priya": [{"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "clubs"}, {"rank": "4", "suit": "hearts"}, {"rank": "2", "suit": "diamonds"}], "Maya": [{"rank": "6", "suit": "spades"}, {"rank": "K", "suit": "spades"}, {"rank": "4", "suit": "clubs"}, {"rank": "K", "suit": "clubs"}], "Marcus": [{"rank": "2", "suit": "hearts"}, {"rank": "5", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}, {"rank": "K", "suit": "hearts"}]}


game_id: 3aaa5b68-d292-4aa5-82cc-4edb1ba71b5c
timestamp: 2026-01-24 18:51:50.696620
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": false}]

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


game_id: 3aaa5b68-d292-4aa5-82cc-4edb1ba71b5c
timestamp: 2026-01-24 18:51:50.713556
player_id: cpu_0
player_name: Priya
action: swap
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "3", "suit": "clubs"}
decision_reason: swapped 4 for 3 at pos 4
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}]


game_id: 3aaa5b68-d292-4aa5-82cc-4edb1ba71b5c
timestamp: 2026-01-24 18:51:50.718814
player_id: cpu_1
player_name: Maya
action: take_discard
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: took 3 from discard
visible_opponents_json:
{"Priya": [{"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "clubs"}, {"rank": "4", "suit": "hearts"}, {"rank": "4", "suit": "spades"}, {"rank": "2", "suit": "diamonds"}], "Sofia": [{"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}, {"rank": "3", "suit": "spades"}], "Marcus": [{"rank": "2", "suit": "hearts"}, {"rank": "5", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}, {"rank": "K", "suit": "hearts"}]}


game_id: 3aaa5b68-d292-4aa5-82cc-4edb1ba71b5c
timestamp: 2026-01-24 18:51:50.724283
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped 3 for 6 at pos 0
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}]

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


game_id: 3aaa5b68-d292-4aa5-82cc-4edb1ba71b5c
timestamp: 2026-01-24 18:51:50.730220
player_id: cpu_2
player_name: Sofia
action: draw_deck
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Priya": [{"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "clubs"}, {"rank": "4", "suit": "hearts"}, {"rank": "4", "suit": "spades"}, {"rank": "2", "suit": "diamonds"}], "Maya": [{"rank": "3", "suit": "clubs"}, {"rank": "K", "suit": "spades"}, {"rank": "4", "suit": "clubs"}, {"rank": "K", "suit": "clubs"}], "Marcus": [{"rank": "2", "suit": "hearts"}, {"rank": "5", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}, {"rank": "K", "suit": "hearts"}]}


game_id: 3aaa5b68-d292-4aa5-82cc-4edb1ba71b5c
timestamp: 2026-01-24 18:51:50.735792
player_id: cpu_2
player_name: Sofia
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 6 for 6 at pos 1
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 3aaa5b68-d292-4aa5-82cc-4edb1ba71b5c
timestamp: 2026-01-24 18:51:50.741131
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 10
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Priya": [{"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "clubs"}, {"rank": "4", "suit": "hearts"}, {"rank": "4", "suit": "spades"}, {"rank": "2", "suit": "diamonds"}], "Maya": [{"rank": "3", "suit": "clubs"}, {"rank": "K", "suit": "spades"}, {"rank": "4", "suit": "clubs"}, {"rank": "K", "suit": "clubs"}], "Sofia": [{"rank": "6", "suit": "hearts"}, {"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}, {"rank": "3", "suit": "spades"}]}


game_id: 3aaa5b68-d292-4aa5-82cc-4edb1ba71b5c
timestamp: 2026-01-24 18:51:50.752957
player_id: cpu_0
player_name: Priya
action: draw_deck
card_rank: 8
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: 3aaa5b68-d292-4aa5-82cc-4edb1ba71b5c
timestamp: 2026-01-24 18:51:50.767104
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: Q
card_suit: spades
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}]

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


game_id: 3aaa5b68-d292-4aa5-82cc-4edb1ba71b5c
timestamp: 2026-01-24 18:51:50.822736
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "2", "suit": "spades"}
decision_reason: swapped 6 for 2 at pos 1
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}]


game_id: 3aaa5b68-d292-4aa5-82cc-4edb1ba71b5c
timestamp: 2026-01-24 18:51:50.828297
player_id: cpu_2
player_name: Sofia
action: take_discard
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: took 2 from discard
visible_opponents_json:
{"Priya": [{"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "clubs"}, {"rank": "4", "suit": "hearts"}, {"rank": "4", "suit": "spades"}, {"rank": "2", "suit": "diamonds"}], "Maya": [{"rank": "3", "suit": "clubs"}, {"rank": "6", "suit": "clubs"}, {"rank": "K", "suit": "spades"}, {"rank": "4", "suit": "clubs"}, {"rank": "K", "suit": "clubs"}], "Marcus": [{"rank": "2", "suit": "hearts"}, {"rank": "5", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}, {"rank": "K", "suit": "hearts"}]}


game_id: 3aaa5b68-d292-4aa5-82cc-4edb1ba71b5c
timestamp: 2026-01-24 18:51:50.833727
player_id: cpu_2
player_name: Sofia
action: swap
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped 2 for 6 at pos 1
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 3aaa5b68-d292-4aa5-82cc-4edb1ba71b5c
timestamp: 2026-01-24 18:51:50.839389
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Priya": [{"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "clubs"}, {"rank": "4", "suit": "hearts"}, {"rank": "4", "suit": "spades"}, {"rank": "2", "suit": "diamonds"}], "Maya": [{"rank": "3", "suit": "clubs"}, {"rank": "6", "suit": "clubs"}, {"rank": "K", "suit": "spades"}, {"rank": "4", "suit": "clubs"}, {"rank": "K", "suit": "clubs"}], "Sofia": [{"rank": "2", "suit": "spades"}, {"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}, {"rank": "3", "suit": "spades"}]}


game_id: 3aaa5b68-d292-4aa5-82cc-4edb1ba71b5c
timestamp: 2026-01-24 18:51:50.851071
player_id: cpu_0
player_name: Priya
action: draw_deck
card_rank: 10
card_suit: spades
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Maya": [{"rank": "3", "suit": "clubs"}, {"rank": "6", "suit": "clubs"}, {"rank": "K", "suit": "spades"}, {"rank": "4", "suit": "clubs"}, {"rank": "K", "suit": "clubs"}], "Sofia": [{"rank": "2", "suit": "spades"}, {"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}, {"rank": "3", "suit": "spades"}], "Marcus": [{"rank": "2", "suit": "hearts"}, {"rank": "5", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}, {"rank": "K", "suit": "hearts"}]}


game_id: 3aaa5b68-d292-4aa5-82cc-4edb1ba71b5c
timestamp: 2026-01-24 18:51:50.863054
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}]

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


game_id: 3aaa5b68-d292-4aa5-82cc-4edb1ba71b5c
timestamp: 2026-01-24 18:51:50.868626
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 5 for 6 at pos 1
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}]

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


game_id: 3aaa5b68-d292-4aa5-82cc-4edb1ba71b5c
timestamp: 2026-01-24 18:51:50.875280
player_id: cpu_2
player_name: Sofia
action: draw_deck
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 3aaa5b68-d292-4aa5-82cc-4edb1ba71b5c
timestamp: 2026-01-24 18:51:50.887753
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 8
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Priya": [{"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "clubs"}, {"rank": "4", "suit": "hearts"}, {"rank": "4", "suit": "spades"}, {"rank": "2", "suit": "diamonds"}], "Maya": [{"rank": "3", "suit": "clubs"}, {"rank": "5", "suit": "hearts"}, {"rank": "K", "suit": "spades"}, {"rank": "4", "suit": "clubs"}, {"rank": "K", "suit": "clubs"}], "Sofia": [{"rank": "2", "suit": "spades"}, {"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}, {"rank": "3", "suit": "spades"}]}


game_id: 3aaa5b68-d292-4aa5-82cc-4edb1ba71b5c
timestamp: 2026-01-24 18:51:50.900650
player_id: cpu_0
player_name: Priya
action: draw_deck
card_rank: J
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Maya": [{"rank": "3", "suit": "clubs"}, {"rank": "5", "suit": "hearts"}, {"rank": "K", "suit": "spades"}, {"rank": "4", "suit": "clubs"}, {"rank": "K", "suit": "clubs"}], "Sofia": [{"rank": "2", "suit": "spades"}, {"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}, {"rank": "3", "suit": "spades"}], "Marcus": [{"rank": "2", "suit": "hearts"}, {"rank": "5", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}, {"rank": "K", "suit": "hearts"}]}


game_id: 3aaa5b68-d292-4aa5-82cc-4edb1ba71b5c
timestamp: 2026-01-24 18:51:51.053180
player_id: cpu_0
player_name: Priya
action: swap
card_rank: 9
card_suit: hearts
discard_top_json: {"rank": "3", "suit": "diamonds"}
decision_reason: swapped 9 for 3 at pos 1
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}]


game_id: 3aaa5b68-d292-4aa5-82cc-4edb1ba71b5c
timestamp: 2026-01-24 18:51:51.059527
player_id: cpu_1
player_name: Maya
action: take_discard
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: took 3 from discard
visible_opponents_json:
{"Priya": [{"rank": "A", "suit": "hearts"}, {"rank": "9", "suit": "hearts"}, {"rank": "2", "suit": "clubs"}, {"rank": "4", "suit": "hearts"}, {"rank": "4", "suit": "spades"}, {"rank": "2", "suit": "diamonds"}], "Sofia": [{"rank": "2", "suit": "spades"}, {"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}, {"rank": "3", "suit": "spades"}], "Marcus": [{"rank": "2", "suit": "hearts"}, {"rank": "5", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}, {"rank": "K", "suit": "hearts"}]}


game_id: 3aaa5b68-d292-4aa5-82cc-4edb1ba71b5c
timestamp: 2026-01-24 18:51:51.066358
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped 3 for 5 at pos 1
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": false}]

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


game_id: 3aaa5b68-d292-4aa5-82cc-4edb1ba71b5c
timestamp: 2026-01-24 18:51:51.073070
player_id: cpu_2
player_name: Sofia
action: draw_deck
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Priya": [{"rank": "A", "suit": "hearts"}, {"rank": "9", "suit": "hearts"}, {"rank": "2", "suit": "clubs"}, {"rank": "4", "suit": "hearts"}, {"rank": "4", "suit": "spades"}, {"rank": "2", "suit": "diamonds"}], "Maya": [{"rank": "3", "suit": "clubs"}, {"rank": "3", "suit": "diamonds"}, {"rank": "K", "suit": "spades"}, {"rank": "4", "suit": "clubs"}, {"rank": "K", "suit": "clubs"}], "Marcus": [{"rank": "2", "suit": "hearts"}, {"rank": "5", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}, {"rank": "K", "suit": "hearts"}]}


game_id: 3aaa5b68-d292-4aa5-82cc-4edb1ba71b5c
timestamp: 2026-01-24 18:51:51.085516
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 10
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Priya": [{"rank": "A", "suit": "hearts"}, {"rank": "9", "suit": "hearts"}, {"rank": "2", "suit": "clubs"}, {"rank": "4", "suit": "hearts"}, {"rank": "4", "suit": "spades"}, {"rank": "2", "suit": "diamonds"}], "Maya": [{"rank": "3", "suit": "clubs"}, {"rank": "3", "suit": "diamonds"}, {"rank": "K", "suit": "spades"}, {"rank": "4", "suit": "clubs"}, {"rank": "K", "suit": "clubs"}], "Sofia": [{"rank": "2", "suit": "spades"}, {"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}, {"rank": "3", "suit": "spades"}]}


game_id: 3aaa5b68-d292-4aa5-82cc-4edb1ba71b5c
timestamp: 2026-01-24 18:51:51.091487
player_id: cpu_3
player_name: Marcus
action: discard
card_rank: 10
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: discarded 10
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: 7ec1f8ca-caa6-4b79-9855-079076d86d2f
timestamp: 2026-01-24 18:51:51.107953
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: Q
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}]

visible_opponents_json:
{"River": [{"rank": "2", "suit": "clubs"}, {"rank": "7", "suit": "spades"}], "Sage": [{"rank": "9", "suit": "hearts"}, {"rank": "10", "suit": "hearts"}], "Diego": [{"rank": "8", "suit": "clubs"}, {"rank": "4", "suit": "spades"}]}


game_id: 7ec1f8ca-caa6-4b79-9855-079076d86d2f
timestamp: 2026-01-24 18:51:51.119929
player_id: cpu_1
player_name: River
action: draw_deck
card_rank: J
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}]

visible_opponents_json:
{"Marcus": [{"rank": "2", "suit": "spades"}, {"rank": "6", "suit": "clubs"}], "Sage": [{"rank": "9", "suit": "hearts"}, {"rank": "10", "suit": "hearts"}], "Diego": [{"rank": "8", "suit": "clubs"}, {"rank": "4", "suit": "spades"}]}


game_id: 7ec1f8ca-caa6-4b79-9855-079076d86d2f
timestamp: 2026-01-24 18:51:51.131157
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: Q
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": true}]

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


game_id: 7ec1f8ca-caa6-4b79-9855-079076d86d2f
timestamp: 2026-01-24 18:51:51.143837
player_id: cpu_3
player_name: Diego
action: draw_deck
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}]

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


game_id: 7ec1f8ca-caa6-4b79-9855-079076d86d2f
timestamp: 2026-01-24 18:51:51.152171
player_id: cpu_3
player_name: Diego
action: swap
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: swapped K for 8 at pos 2
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}]

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


game_id: 7ec1f8ca-caa6-4b79-9855-079076d86d2f
timestamp: 2026-01-24 18:51:51.157796
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: 7ec1f8ca-caa6-4b79-9855-079076d86d2f
timestamp: 2026-01-24 18:51:51.163382
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped K for 6 at pos 5
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: 7ec1f8ca-caa6-4b79-9855-079076d86d2f
timestamp: 2026-01-24 18:51:51.169334
player_id: cpu_1
player_name: River
action: draw_deck
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}]

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


game_id: 7ec1f8ca-caa6-4b79-9855-079076d86d2f
timestamp: 2026-01-24 18:51:51.175214
player_id: cpu_1
player_name: River
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped 4 for 7 at pos 4
hand_json:
[{"rank": "6", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}]

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


game_id: 7ec1f8ca-caa6-4b79-9855-079076d86d2f
timestamp: 2026-01-24 18:51:51.181681
player_id: cpu_2
player_name: Sage
action: take_discard
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": true}]

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


game_id: 7ec1f8ca-caa6-4b79-9855-079076d86d2f
timestamp: 2026-01-24 18:51:51.187315
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: swapped 7 for 10 at pos 5
hand_json:
[{"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}]

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


game_id: 7ec1f8ca-caa6-4b79-9855-079076d86d2f
timestamp: 2026-01-24 18:51:51.193058
player_id: cpu_3
player_name: Diego
action: draw_deck
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}]

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


game_id: 7ec1f8ca-caa6-4b79-9855-079076d86d2f
timestamp: 2026-01-24 18:51:51.199664
player_id: cpu_3
player_name: Diego
action: swap
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "4", "suit": "spades"}
decision_reason: swapped 3 for 4 at pos 3
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}]

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


game_id: 7ec1f8ca-caa6-4b79-9855-079076d86d2f
timestamp: 2026-01-24 18:51:51.205954
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "4", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: 7ec1f8ca-caa6-4b79-9855-079076d86d2f
timestamp: 2026-01-24 18:51:51.212461
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped 5 for 7 at pos 2
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: 7ec1f8ca-caa6-4b79-9855-079076d86d2f
timestamp: 2026-01-24 18:51:51.219135
player_id: cpu_1
player_name: River
action: draw_deck
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}]

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


game_id: 7ec1f8ca-caa6-4b79-9855-079076d86d2f
timestamp: 2026-01-24 18:51:51.224937
player_id: cpu_1
player_name: River
action: swap
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: swapped A for 4 at pos 4
hand_json:
[{"rank": "6", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}]

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


game_id: 7ec1f8ca-caa6-4b79-9855-079076d86d2f
timestamp: 2026-01-24 18:51:51.230788
player_id: cpu_2
player_name: Sage
action: take_discard
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}]

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


game_id: 7ec1f8ca-caa6-4b79-9855-079076d86d2f
timestamp: 2026-01-24 18:51:51.236096
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: swapped 4 for 10 at pos 0
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}]

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


game_id: 7ec1f8ca-caa6-4b79-9855-079076d86d2f
timestamp: 2026-01-24 18:51:51.241892
player_id: cpu_3
player_name: Diego
action: draw_deck
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}]

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


game_id: 7ec1f8ca-caa6-4b79-9855-079076d86d2f
timestamp: 2026-01-24 18:51:51.247463
player_id: cpu_3
player_name: Diego
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped 4 for 6 at pos 1
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}]

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


game_id: 7ec1f8ca-caa6-4b79-9855-079076d86d2f
timestamp: 2026-01-24 18:51:51.252807
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: 7ec1f8ca-caa6-4b79-9855-079076d86d2f
timestamp: 2026-01-24 18:51:51.258979
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped A for 5 at pos 2
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: 7ec1f8ca-caa6-4b79-9855-079076d86d2f
timestamp: 2026-01-24 18:51:51.264620
player_id: cpu_1
player_name: River
action: draw_deck
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}]

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


game_id: 7ec1f8ca-caa6-4b79-9855-079076d86d2f
timestamp: 2026-01-24 18:51:51.270366
player_id: cpu_1
player_name: River
action: swap
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "A", "suit": "diamonds"}
decision_reason: swapped 2 for A at pos 4
hand_json:
[{"rank": "6", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}]

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


game_id: 7ec1f8ca-caa6-4b79-9855-079076d86d2f
timestamp: 2026-01-24 18:51:51.276773
player_id: cpu_2
player_name: Sage
action: take_discard
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: took A from discard
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}]

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


game_id: 7ec1f8ca-caa6-4b79-9855-079076d86d2f
timestamp: 2026-01-24 18:51:51.282645
player_id: cpu_2
player_name: Sage
action: swap
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: swapped A for 9 at pos 1
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}]

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


game_id: 7ec1f8ca-caa6-4b79-9855-079076d86d2f
timestamp: 2026-01-24 18:51:51.288474
player_id: cpu_3
player_name: Diego
action: draw_deck
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}]

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


game_id: 7ec1f8ca-caa6-4b79-9855-079076d86d2f
timestamp: 2026-01-24 18:51:51.300092
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: 7ec1f8ca-caa6-4b79-9855-079076d86d2f
timestamp: 2026-01-24 18:51:51.305811
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped A for 7 at pos 0
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: 7ec1f8ca-caa6-4b79-9855-079076d86d2f
timestamp: 2026-01-24 18:51:51.312119
player_id: cpu_1
player_name: River
action: draw_deck
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}]

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


game_id: 7ec1f8ca-caa6-4b79-9855-079076d86d2f
timestamp: 2026-01-24 18:51:51.325246
player_id: cpu_2
player_name: Sage
action: take_discard
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}]

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


game_id: 7ec1f8ca-caa6-4b79-9855-079076d86d2f
timestamp: 2026-01-24 18:51:51.331112
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: swapped 7 for 9 at pos 2
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}]

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


game_id: 7ec1f8ca-caa6-4b79-9855-079076d86d2f
timestamp: 2026-01-24 18:51:51.336706
player_id: cpu_3
player_name: Diego
action: draw_deck
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Marcus": [{"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "spades"}, {"rank": "A", "suit": "clubs"}, {"rank": "K", "suit": "diamonds"}], "River": [{"rank": "2", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}], "Sage": [{"rank": "4", "suit": "hearts"}, {"rank": "A", "suit": "diamonds"}, {"rank": "7", "suit": "diamonds"}, {"rank": "7", "suit": "spades"}]}


game_id: 7ec1f8ca-caa6-4b79-9855-079076d86d2f
timestamp: 2026-01-24 18:51:51.342446
player_id: cpu_3
player_name: Diego
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped 3 for 5 at pos 0
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}]

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


game_id: 7ec1f8ca-caa6-4b79-9855-079076d86d2f
timestamp: 2026-01-24 18:51:51.348197
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: K
card_suit: spades
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: 7ec1f8ca-caa6-4b79-9855-079076d86d2f
timestamp: 2026-01-24 18:51:51.353930
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: K
card_suit: spades
discard_top_json: {"rank": "A", "suit": "hearts"}
decision_reason: swapped K for A at pos 0
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: 7ec1f8ca-caa6-4b79-9855-079076d86d2f
timestamp: 2026-01-24 18:51:51.359841
player_id: cpu_1
player_name: River
action: take_discard
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: took A from discard
visible_opponents_json:
{"Marcus": [{"rank": "K", "suit": "spades"}, {"rank": "2", "suit": "spades"}, {"rank": "A", "suit": "clubs"}, {"rank": "K", "suit": "diamonds"}], "Sage": [{"rank": "4", "suit": "hearts"}, {"rank": "A", "suit": "diamonds"}, {"rank": "7", "suit": "diamonds"}, {"rank": "7", "suit": "spades"}], "Diego": [{"rank": "3", "suit": "spades"}, {"rank": "4", "suit": "diamonds"}, {"rank": "K", "suit": "clubs"}, {"rank": "3", "suit": "hearts"}]}


game_id: 7ec1f8ca-caa6-4b79-9855-079076d86d2f
timestamp: 2026-01-24 18:51:51.365948
player_id: cpu_1
player_name: River
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "2", "suit": "hearts"}
decision_reason: swapped A for 2 at pos 1
hand_json:
[{"rank": "6", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}]

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


game_id: 7ec1f8ca-caa6-4b79-9855-079076d86d2f
timestamp: 2026-01-24 18:51:51.371801
player_id: cpu_2
player_name: Sage
action: take_discard
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: took 2 from discard
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}]

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


game_id: 7ec1f8ca-caa6-4b79-9855-079076d86d2f
timestamp: 2026-01-24 18:51:51.377621
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 2 for 7 at pos 2
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}]

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


game_id: 7ec1f8ca-caa6-4b79-9855-079076d86d2f
timestamp: 2026-01-24 18:51:51.383405
player_id: cpu_3
player_name: Diego
action: draw_deck
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}]

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


game_id: 7ec1f8ca-caa6-4b79-9855-079076d86d2f
timestamp: 2026-01-24 18:51:51.389402
player_id: cpu_3
player_name: Diego
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped 5 for 5 at pos 5
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: 7ec1f8ca-caa6-4b79-9855-079076d86d2f
timestamp: 2026-01-24 18:51:51.395340
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: 9
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: 7ec1f8ca-caa6-4b79-9855-079076d86d2f
timestamp: 2026-01-24 18:51:51.408739
player_id: cpu_1
player_name: River
action: draw_deck
card_rank: Q
card_suit: spades
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}]

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


game_id: 7ec1f8ca-caa6-4b79-9855-079076d86d2f
timestamp: 2026-01-24 18:51:51.421029
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: A
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}]

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


game_id: 7ec1f8ca-caa6-4b79-9855-079076d86d2f
timestamp: 2026-01-24 18:51:51.427367
player_id: cpu_2
player_name: Sage
action: swap
card_rank: A
card_suit: spades
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: swapped A for 10 at pos 4
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}]

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


game_id: 7ec1f8ca-caa6-4b79-9855-079076d86d2f
timestamp: 2026-01-24 18:51:51.434161
player_id: cpu_3
player_name: Diego
action: draw_deck
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: 7ec1f8ca-caa6-4b79-9855-079076d86d2f
timestamp: 2026-01-24 18:51:51.440291
player_id: cpu_3
player_name: Diego
action: swap
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped K for 5 at pos 5
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: 7ec1f8ca-caa6-4b79-9855-079076d86d2f
timestamp: 2026-01-24 18:51:51.446065
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: 9
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"River": [{"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}], "Sage": [{"rank": "4", "suit": "hearts"}, {"rank": "A", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}, {"rank": "A", "suit": "spades"}, {"rank": "7", "suit": "spades"}], "Diego": [{"rank": "3", "suit": "spades"}, {"rank": "4", "suit": "diamonds"}, {"rank": "K", "suit": "clubs"}, {"rank": "3", "suit": "hearts"}, {"rank": "K", "suit": "hearts"}]}


game_id: 7ec1f8ca-caa6-4b79-9855-079076d86d2f
timestamp: 2026-01-24 18:51:51.458266
player_id: cpu_1
player_name: River
action: draw_deck
card_rank: J
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Marcus": [{"rank": "K", "suit": "spades"}, {"rank": "2", "suit": "spades"}, {"rank": "A", "suit": "clubs"}, {"rank": "K", "suit": "diamonds"}], "Sage": [{"rank": "4", "suit": "hearts"}, {"rank": "A", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}, {"rank": "A", "suit": "spades"}, {"rank": "7", "suit": "spades"}], "Diego": [{"rank": "3", "suit": "spades"}, {"rank": "4", "suit": "diamonds"}, {"rank": "K", "suit": "clubs"}, {"rank": "3", "suit": "hearts"}, {"rank": "K", "suit": "hearts"}]}


game_id: 7ec1f8ca-caa6-4b79-9855-079076d86d2f
timestamp: 2026-01-24 18:51:51.470222
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: 10
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}]

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


game_id: 7ec1f8ca-caa6-4b79-9855-079076d86d2f
timestamp: 2026-01-24 18:51:51.503615
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: swapped 3 for J at pos 3
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}]


game_id: 7ec1f8ca-caa6-4b79-9855-079076d86d2f
timestamp: 2026-01-24 18:51:51.509981
player_id: cpu_1
player_name: River
action: draw_deck
card_rank: 10
card_suit: spades
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Marcus": [{"rank": "K", "suit": "spades"}, {"rank": "2", "suit": "spades"}, {"rank": "A", "suit": "clubs"}, {"rank": "3", "suit": "diamonds"}, {"rank": "K", "suit": "diamonds"}], "Sage": [{"rank": "4", "suit": "hearts"}, {"rank": "A", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}, {"rank": "A", "suit": "spades"}, {"rank": "7", "suit": "spades"}], "Diego": [{"rank": "3", "suit": "spades"}, {"rank": "4", "suit": "diamonds"}, {"rank": "K", "suit": "clubs"}, {"rank": "3", "suit": "hearts"}, {"rank": "K", "suit": "hearts"}]}


game_id: 7ec1f8ca-caa6-4b79-9855-079076d86d2f
timestamp: 2026-01-24 18:51:51.522381
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Marcus": [{"rank": "K", "suit": "spades"}, {"rank": "2", "suit": "spades"}, {"rank": "A", "suit": "clubs"}, {"rank": "3", "suit": "diamonds"}, {"rank": "K", "suit": "diamonds"}], "River": [{"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}], "Diego": [{"rank": "3", "suit": "spades"}, {"rank": "4", "suit": "diamonds"}, {"rank": "K", "suit": "clubs"}, {"rank": "3", "suit": "hearts"}, {"rank": "K", "suit": "hearts"}]}


game_id: 7ec1f8ca-caa6-4b79-9855-079076d86d2f
timestamp: 2026-01-24 18:51:51.528734
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped 6 for 7 at pos 5
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: 7ec1f8ca-caa6-4b79-9855-079076d86d2f
timestamp: 2026-01-24 18:51:51.535363
player_id: cpu_3
player_name: Diego
action: draw_deck
card_rank: Q
card_suit: spades
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Marcus": [{"rank": "K", "suit": "spades"}, {"rank": "2", "suit": "spades"}, {"rank": "A", "suit": "clubs"}, {"rank": "3", "suit": "diamonds"}, {"rank": "K", "suit": "diamonds"}], "River": [{"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}], "Sage": [{"rank": "4", "suit": "hearts"}, {"rank": "A", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}, {"rank": "A", "suit": "spades"}, {"rank": "6", "suit": "clubs"}]}


game_id: 7ec1f8ca-caa6-4b79-9855-079076d86d2f
timestamp: 2026-01-24 18:51:51.542014
player_id: cpu_3
player_name: Diego
action: swap
card_rank: Q
card_suit: spades
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped Q for 6 at pos 4
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: 7ec1f8ca-caa6-4b79-9855-079076d86d2f
timestamp: 2026-01-24 18:51:51.549055
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: 7ec1f8ca-caa6-4b79-9855-079076d86d2f
timestamp: 2026-01-24 18:51:51.560354
player_id: cpu_1
player_name: River
action: draw_deck
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Marcus": [{"rank": "K", "suit": "spades"}, {"rank": "2", "suit": "spades"}, {"rank": "A", "suit": "clubs"}, {"rank": "3", "suit": "diamonds"}, {"rank": "K", "suit": "diamonds"}], "Sage": [{"rank": "4", "suit": "hearts"}, {"rank": "A", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}, {"rank": "A", "suit": "spades"}, {"rank": "6", "suit": "clubs"}], "Diego": [{"rank": "3", "suit": "spades"}, {"rank": "4", "suit": "diamonds"}, {"rank": "K", "suit": "clubs"}, {"rank": "3", "suit": "hearts"}, {"rank": "Q", "suit": "spades"}, {"rank": "K", "suit": "hearts"}]}


game_id: 7ec1f8ca-caa6-4b79-9855-079076d86d2f
timestamp: 2026-01-24 18:51:51.566275
player_id: cpu_1
player_name: River
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: swapped 5 for 4 at pos 5
hand_json:
[{"rank": "6", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}]

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


game_id: 7ec1f8ca-caa6-4b79-9855-079076d86d2f
timestamp: 2026-01-24 18:51:51.571974
player_id: cpu_2
player_name: Sage
action: take_discard
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: 7ec1f8ca-caa6-4b79-9855-079076d86d2f
timestamp: 2026-01-24 18:51:51.577564
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "3", "suit": "clubs"}
decision_reason: swapped 4 for 3 at pos 3
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: 98fe0f8b-b589-49a0-8df7-b174c7217e10
timestamp: 2026-01-24 18:51:51.594045
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: Q
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: 98fe0f8b-b589-49a0-8df7-b174c7217e10
timestamp: 2026-01-24 18:51:51.606062
player_id: cpu_1
player_name: Diego
action: draw_deck
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}]

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


game_id: 98fe0f8b-b589-49a0-8df7-b174c7217e10
timestamp: 2026-01-24 18:51:51.612130
player_id: cpu_1
player_name: Diego
action: swap
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: swapped A for 10 at pos 4
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}]

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


game_id: 98fe0f8b-b589-49a0-8df7-b174c7217e10
timestamp: 2026-01-24 18:51:51.617984
player_id: cpu_2
player_name: Marcus
action: draw_deck
card_rank: A
card_suit: spades
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}]

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


game_id: 98fe0f8b-b589-49a0-8df7-b174c7217e10
timestamp: 2026-01-24 18:51:51.624069
player_id: cpu_2
player_name: Marcus
action: swap
card_rank: A
card_suit: spades
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped A for 6 at pos 4
hand_json:
[{"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}]

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


game_id: 98fe0f8b-b589-49a0-8df7-b174c7217e10
timestamp: 2026-01-24 18:51:51.629598
player_id: cpu_3
player_name: Kenji
action: draw_deck
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}]

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


game_id: 98fe0f8b-b589-49a0-8df7-b174c7217e10
timestamp: 2026-01-24 18:51:51.635261
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 3 for 7 at pos 3
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}]

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


game_id: 98fe0f8b-b589-49a0-8df7-b174c7217e10
timestamp: 2026-01-24 18:51:51.640830
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: 98fe0f8b-b589-49a0-8df7-b174c7217e10
timestamp: 2026-01-24 18:51:51.646315
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped 4 for 6 at pos 0
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: 98fe0f8b-b589-49a0-8df7-b174c7217e10
timestamp: 2026-01-24 18:51:51.652063
player_id: cpu_1
player_name: Diego
action: draw_deck
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}]

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


game_id: 98fe0f8b-b589-49a0-8df7-b174c7217e10
timestamp: 2026-01-24 18:51:51.663078
player_id: cpu_2
player_name: Marcus
action: draw_deck
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}]

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


game_id: 98fe0f8b-b589-49a0-8df7-b174c7217e10
timestamp: 2026-01-24 18:51:51.669081
player_id: cpu_2
player_name: Marcus
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: swapped A for 4 at pos 1
hand_json:
[{"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}]

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


game_id: 98fe0f8b-b589-49a0-8df7-b174c7217e10
timestamp: 2026-01-24 18:51:51.674856
player_id: cpu_3
player_name: Kenji
action: draw_deck
card_rank: 9
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}]

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


game_id: 98fe0f8b-b589-49a0-8df7-b174c7217e10
timestamp: 2026-01-24 18:51:51.687402
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: Q
card_suit: spades
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: 98fe0f8b-b589-49a0-8df7-b174c7217e10
timestamp: 2026-01-24 18:51:51.698993
player_id: cpu_1
player_name: Diego
action: draw_deck
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Sofia": [{"rank": "4", "suit": "clubs"}, {"rank": "K", "suit": "clubs"}], "Marcus": [{"rank": "A", "suit": "hearts"}, {"rank": "K", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}], "Kenji": [{"rank": "K", "suit": "spades"}, {"rank": "3", "suit": "diamonds"}]}


game_id: 98fe0f8b-b589-49a0-8df7-b174c7217e10
timestamp: 2026-01-24 18:51:51.704409
player_id: cpu_1
player_name: Diego
action: swap
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped 2 for 5 at pos 2
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}]

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


game_id: 98fe0f8b-b589-49a0-8df7-b174c7217e10
timestamp: 2026-01-24 18:51:51.709692
player_id: cpu_2
player_name: Marcus
action: draw_deck
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}]

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


game_id: 98fe0f8b-b589-49a0-8df7-b174c7217e10
timestamp: 2026-01-24 18:51:51.715087
player_id: cpu_2
player_name: Marcus
action: swap
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: swapped 4 for 9 at pos 0
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}]

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


game_id: 98fe0f8b-b589-49a0-8df7-b174c7217e10
timestamp: 2026-01-24 18:51:51.720646
player_id: cpu_3
player_name: Kenji
action: draw_deck
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Sofia": [{"rank": "4", "suit": "clubs"}, {"rank": "K", "suit": "clubs"}], "Diego": [{"rank": "2", "suit": "spades"}, {"rank": "A", "suit": "clubs"}], "Marcus": [{"rank": "4", "suit": "spades"}, {"rank": "A", "suit": "hearts"}, {"rank": "K", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}]}


game_id: 98fe0f8b-b589-49a0-8df7-b174c7217e10
timestamp: 2026-01-24 18:51:51.726381
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "2", "suit": "hearts"}
decision_reason: swapped 7 for 2 at pos 0
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}]

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


game_id: 98fe0f8b-b589-49a0-8df7-b174c7217e10
timestamp: 2026-01-24 18:51:51.732364
player_id: cpu_0
player_name: Sofia
action: take_discard
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: took 2 from discard
visible_opponents_json:
{"Diego": [{"rank": "2", "suit": "spades"}, {"rank": "A", "suit": "clubs"}], "Marcus": [{"rank": "4", "suit": "spades"}, {"rank": "A", "suit": "hearts"}, {"rank": "K", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}], "Kenji": [{"rank": "7", "suit": "clubs"}, {"rank": "K", "suit": "spades"}, {"rank": "3", "suit": "diamonds"}]}


game_id: 98fe0f8b-b589-49a0-8df7-b174c7217e10
timestamp: 2026-01-24 18:51:51.739395
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: swapped 2 for 4 at pos 0
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: 98fe0f8b-b589-49a0-8df7-b174c7217e10
timestamp: 2026-01-24 18:51:51.744807
player_id: cpu_1
player_name: Diego
action: draw_deck
card_rank: Q
card_suit: hearts
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}]

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


game_id: 98fe0f8b-b589-49a0-8df7-b174c7217e10
timestamp: 2026-01-24 18:51:51.756897
player_id: cpu_2
player_name: Marcus
action: draw_deck
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}]

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


game_id: 98fe0f8b-b589-49a0-8df7-b174c7217e10
timestamp: 2026-01-24 18:51:51.768028
player_id: cpu_3
player_name: Kenji
action: draw_deck
card_rank: J
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}]

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


game_id: 98fe0f8b-b589-49a0-8df7-b174c7217e10
timestamp: 2026-01-24 18:51:51.797405
player_id: cpu_1
player_name: Diego
action: swap
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: swapped A for 9 at pos 1
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}]


game_id: 98fe0f8b-b589-49a0-8df7-b174c7217e10
timestamp: 2026-01-24 18:51:51.803907
player_id: cpu_2
player_name: Marcus
action: draw_deck
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Sofia": [{"rank": "2", "suit": "hearts"}, {"rank": "K", "suit": "clubs"}], "Diego": [{"rank": "A", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}, {"rank": "A", "suit": "clubs"}], "Kenji": [{"rank": "7", "suit": "clubs"}, {"rank": "K", "suit": "spades"}, {"rank": "3", "suit": "diamonds"}]}


game_id: 98fe0f8b-b589-49a0-8df7-b174c7217e10
timestamp: 2026-01-24 18:51:51.810011
player_id: cpu_2
player_name: Marcus
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: swapped 5 for J at pos 3
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}]

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


game_id: 98fe0f8b-b589-49a0-8df7-b174c7217e10
timestamp: 2026-01-24 18:51:51.815993
player_id: cpu_3
player_name: Kenji
action: draw_deck
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Sofia": [{"rank": "2", "suit": "hearts"}, {"rank": "K", "suit": "clubs"}], "Diego": [{"rank": "A", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}, {"rank": "A", "suit": "clubs"}], "Marcus": [{"rank": "4", "suit": "spades"}, {"rank": "A", "suit": "hearts"}, {"rank": "K", "suit": "diamonds"}, {"rank": "5", "suit": "spades"}, {"rank": "A", "suit": "spades"}]}


game_id: 98fe0f8b-b589-49a0-8df7-b174c7217e10
timestamp: 2026-01-24 18:51:51.827815
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: 8
card_suit: spades
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Diego": [{"rank": "A", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}, {"rank": "A", "suit": "clubs"}], "Marcus": [{"rank": "4", "suit": "spades"}, {"rank": "A", "suit": "hearts"}, {"rank": "K", "suit": "diamonds"}, {"rank": "5", "suit": "spades"}, {"rank": "A", "suit": "spades"}], "Kenji": [{"rank": "7", "suit": "clubs"}, {"rank": "K", "suit": "spades"}, {"rank": "3", "suit": "diamonds"}]}


game_id: 98fe0f8b-b589-49a0-8df7-b174c7217e10
timestamp: 2026-01-24 18:51:51.838823
player_id: cpu_1
player_name: Diego
action: draw_deck
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}]

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


game_id: 98fe0f8b-b589-49a0-8df7-b174c7217e10
timestamp: 2026-01-24 18:51:51.856624
player_id: cpu_2
player_name: Marcus
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped 4 for 5 at pos 3
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}]


game_id: 98fe0f8b-b589-49a0-8df7-b174c7217e10
timestamp: 2026-01-24 18:51:51.862634
player_id: cpu_3
player_name: Kenji
action: take_discard
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: took 5 from discard
visible_opponents_json:
{"Sofia": [{"rank": "2", "suit": "hearts"}, {"rank": "K", "suit": "clubs"}], "Diego": [{"rank": "A", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}, {"rank": "A", "suit": "clubs"}], "Marcus": [{"rank": "4", "suit": "spades"}, {"rank": "A", "suit": "hearts"}, {"rank": "K", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}]}


game_id: 98fe0f8b-b589-49a0-8df7-b174c7217e10
timestamp: 2026-01-24 18:51:51.869127
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped 5 for 7 at pos 0
hand_json:
[{"rank": "5", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}]

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


game_id: 98fe0f8b-b589-49a0-8df7-b174c7217e10
timestamp: 2026-01-24 18:51:51.874886
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: Q
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Diego": [{"rank": "A", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}, {"rank": "A", "suit": "clubs"}], "Marcus": [{"rank": "4", "suit": "spades"}, {"rank": "A", "suit": "hearts"}, {"rank": "K", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}], "Kenji": [{"rank": "5", "suit": "spades"}, {"rank": "K", "suit": "spades"}, {"rank": "3", "suit": "diamonds"}]}


game_id: 98fe0f8b-b589-49a0-8df7-b174c7217e10
timestamp: 2026-01-24 18:51:51.888016
player_id: cpu_1
player_name: Diego
action: draw_deck
card_rank: J
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Sofia": [{"rank": "2", "suit": "hearts"}, {"rank": "K", "suit": "clubs"}], "Marcus": [{"rank": "4", "suit": "spades"}, {"rank": "A", "suit": "hearts"}, {"rank": "K", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}], "Kenji": [{"rank": "5", "suit": "spades"}, {"rank": "K", "suit": "spades"}, {"rank": "3", "suit": "diamonds"}]}


game_id: 98fe0f8b-b589-49a0-8df7-b174c7217e10
timestamp: 2026-01-24 18:51:51.899592
player_id: cpu_2
player_name: Marcus
action: draw_deck
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}]

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


game_id: 98fe0f8b-b589-49a0-8df7-b174c7217e10
timestamp: 2026-01-24 18:51:51.905221
player_id: cpu_2
player_name: Marcus
action: swap
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "spades"}
decision_reason: swapped 2 for 4 at pos 0
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}]

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


game_id: 98fe0f8b-b589-49a0-8df7-b174c7217e10
timestamp: 2026-01-24 18:51:51.910959
player_id: cpu_3
player_name: Kenji
action: draw_deck
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "4", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}]

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


game_id: 98fe0f8b-b589-49a0-8df7-b174c7217e10
timestamp: 2026-01-24 18:51:51.916683
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped 3 for 5 at pos 0
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}]

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


game_id: 98fe0f8b-b589-49a0-8df7-b174c7217e10
timestamp: 2026-01-24 18:51:51.924232
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Diego": [{"rank": "A", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}, {"rank": "A", "suit": "clubs"}], "Marcus": [{"rank": "2", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "K", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}], "Kenji": [{"rank": "3", "suit": "hearts"}, {"rank": "K", "suit": "spades"}, {"rank": "3", "suit": "diamonds"}]}


game_id: 98fe0f8b-b589-49a0-8df7-b174c7217e10
timestamp: 2026-01-24 18:51:51.930209
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: swapped 3 for J at pos 2
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: 98fe0f8b-b589-49a0-8df7-b174c7217e10
timestamp: 2026-01-24 18:51:51.937128
player_id: cpu_1
player_name: Diego
action: draw_deck
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Sofia": [{"rank": "2", "suit": "hearts"}, {"rank": "3", "suit": "spades"}, {"rank": "K", "suit": "clubs"}], "Marcus": [{"rank": "2", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "K", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}], "Kenji": [{"rank": "3", "suit": "hearts"}, {"rank": "K", "suit": "spades"}, {"rank": "3", "suit": "diamonds"}]}


game_id: 98fe0f8b-b589-49a0-8df7-b174c7217e10
timestamp: 2026-01-24 18:51:51.949825
player_id: cpu_2
player_name: Marcus
action: draw_deck
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}]

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


game_id: 98fe0f8b-b589-49a0-8df7-b174c7217e10
timestamp: 2026-01-24 18:51:51.955810
player_id: cpu_2
player_name: Marcus
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: swapped 4 for 10 at pos 5
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 98fe0f8b-b589-49a0-8df7-b174c7217e10
timestamp: 2026-01-24 18:51:51.961978
player_id: cpu_3
player_name: Kenji
action: draw_deck
card_rank: J
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}]

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


game_id: 98fe0f8b-b589-49a0-8df7-b174c7217e10
timestamp: 2026-01-24 18:51:51.968019
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: J
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: swapped J for 10 at pos 1
hand_json:
[{"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}]

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


game_id: 98fe0f8b-b589-49a0-8df7-b174c7217e10
timestamp: 2026-01-24 18:51:51.973756
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: 98fe0f8b-b589-49a0-8df7-b174c7217e10
timestamp: 2026-01-24 18:51:51.985144
player_id: cpu_1
player_name: Diego
action: draw_deck
card_rank: Q
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Sofia": [{"rank": "2", "suit": "hearts"}, {"rank": "3", "suit": "spades"}, {"rank": "K", "suit": "clubs"}], "Marcus": [{"rank": "2", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "K", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}, {"rank": "4", "suit": "clubs"}], "Kenji": [{"rank": "3", "suit": "hearts"}, {"rank": "J", "suit": "diamonds"}, {"rank": "K", "suit": "spades"}, {"rank": "3", "suit": "diamonds"}]}


game_id: 98fe0f8b-b589-49a0-8df7-b174c7217e10
timestamp: 2026-01-24 18:51:51.990739
player_id: cpu_1
player_name: Diego
action: discard
card_rank: Q
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: discarded Q
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: e1f12782-2733-400c-bb70-5983dabb0be6
timestamp: 2026-01-24 18:51:52.007950
player_id: cpu_0
player_name: Sofia
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": "3", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": true}]

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


game_id: e1f12782-2733-400c-bb70-5983dabb0be6
timestamp: 2026-01-24 18:51:52.013940
player_id: cpu_0
player_name: Sofia
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": "3", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": true}]

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


game_id: e1f12782-2733-400c-bb70-5983dabb0be6
timestamp: 2026-01-24 18:51:52.019911
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}]

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


game_id: e1f12782-2733-400c-bb70-5983dabb0be6
timestamp: 2026-01-24 18:51:52.025943
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: swapped 7 for 8 at pos 1
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}]

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


game_id: e1f12782-2733-400c-bb70-5983dabb0be6
timestamp: 2026-01-24 18:51:52.031982
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}]

visible_opponents_json:
{"Sofia": [{"rank": "8", "suit": "spades"}, {"rank": "9", "suit": "diamonds"}], "Maya": [{"rank": "7", "suit": "spades"}, {"rank": "6", "suit": "clubs"}], "Marcus": [{"rank": "10", "suit": "hearts"}, {"rank": "3", "suit": "spades"}]}


game_id: e1f12782-2733-400c-bb70-5983dabb0be6
timestamp: 2026-01-24 18:51:52.037849
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped A for 7 at pos 2
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}]

visible_opponents_json:
{"Sofia": [{"rank": "8", "suit": "spades"}, {"rank": "9", "suit": "diamonds"}], "Maya": [{"rank": "7", "suit": "spades"}, {"rank": "6", "suit": "clubs"}], "Marcus": [{"rank": "10", "suit": "hearts"}, {"rank": "3", "suit": "spades"}]}


game_id: e1f12782-2733-400c-bb70-5983dabb0be6
timestamp: 2026-01-24 18:51:52.044133
player_id: cpu_3
player_name: Marcus
action: take_discard
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "10", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}]

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


game_id: e1f12782-2733-400c-bb70-5983dabb0be6
timestamp: 2026-01-24 18:51:52.049734
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: swapped 7 for 10 at pos 0
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}]

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


game_id: e1f12782-2733-400c-bb70-5983dabb0be6
timestamp: 2026-01-24 18:51:52.055777
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: K
card_suit: spades
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "8", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": true}]

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


game_id: e1f12782-2733-400c-bb70-5983dabb0be6
timestamp: 2026-01-24 18:51:52.061821
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: K
card_suit: spades
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: swapped K for 9 at pos 5
hand_json:
[{"rank": "8", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: e1f12782-2733-400c-bb70-5983dabb0be6
timestamp: 2026-01-24 18:51:52.067996
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}]

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


game_id: e1f12782-2733-400c-bb70-5983dabb0be6
timestamp: 2026-01-24 18:51:52.073625
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped 4 for 7 at pos 1
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}]

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


game_id: e1f12782-2733-400c-bb70-5983dabb0be6
timestamp: 2026-01-24 18:51:52.079513
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}]

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


game_id: e1f12782-2733-400c-bb70-5983dabb0be6
timestamp: 2026-01-24 18:51:52.084890
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: swapped 3 for 9 at pos 5
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: e1f12782-2733-400c-bb70-5983dabb0be6
timestamp: 2026-01-24 18:51:52.090451
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: Q
card_suit: spades
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}]

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


game_id: e1f12782-2733-400c-bb70-5983dabb0be6
timestamp: 2026-01-24 18:51:52.101607
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "8", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: e1f12782-2733-400c-bb70-5983dabb0be6
timestamp: 2026-01-24 18:51:52.113954
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}]

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


game_id: e1f12782-2733-400c-bb70-5983dabb0be6
timestamp: 2026-01-24 18:51:52.119522
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 2 for 6 at pos 3
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}]

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


game_id: e1f12782-2733-400c-bb70-5983dabb0be6
timestamp: 2026-01-24 18:51:52.125111
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: e1f12782-2733-400c-bb70-5983dabb0be6
timestamp: 2026-01-24 18:51:52.131497
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped 2 for 5 at pos 4
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: e1f12782-2733-400c-bb70-5983dabb0be6
timestamp: 2026-01-24 18:51:52.137290
player_id: cpu_3
player_name: Marcus
action: take_discard
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: took 5 from discard
visible_opponents_json:
{"Sofia": [{"rank": "8", "suit": "spades"}, {"rank": "K", "suit": "spades"}], "Maya": [{"rank": "4", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}], "Kenji": [{"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "spades"}, {"rank": "3", "suit": "diamonds"}]}


game_id: e1f12782-2733-400c-bb70-5983dabb0be6
timestamp: 2026-01-24 18:51:52.143100
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped 5 for 7 at pos 0
hand_json:
[{"rank": "5", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}]

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


game_id: e1f12782-2733-400c-bb70-5983dabb0be6
timestamp: 2026-01-24 18:51:52.149873
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Maya": [{"rank": "4", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}], "Kenji": [{"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "spades"}, {"rank": "3", "suit": "diamonds"}], "Marcus": [{"rank": "5", "suit": "spades"}, {"rank": "3", "suit": "spades"}]}


game_id: e1f12782-2733-400c-bb70-5983dabb0be6
timestamp: 2026-01-24 18:51:52.161758
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}]

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


game_id: e1f12782-2733-400c-bb70-5983dabb0be6
timestamp: 2026-01-24 18:51:52.168526
player_id: cpu_1
player_name: Maya
action: swap
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: swapped A for 4 at pos 1
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}]

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


game_id: e1f12782-2733-400c-bb70-5983dabb0be6
timestamp: 2026-01-24 18:51:52.174970
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: e1f12782-2733-400c-bb70-5983dabb0be6
timestamp: 2026-01-24 18:51:52.180628
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "3", "suit": "diamonds"}
decision_reason: swapped K for 3 at pos 5
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: e1f12782-2733-400c-bb70-5983dabb0be6
timestamp: 2026-01-24 18:51:52.186223
player_id: cpu_3
player_name: Marcus
action: take_discard
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "5", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}]

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


game_id: e1f12782-2733-400c-bb70-5983dabb0be6
timestamp: 2026-01-24 18:51:52.191710
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped 3 for 5 at pos 1
hand_json:
[{"rank": "5", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}]

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


game_id: e1f12782-2733-400c-bb70-5983dabb0be6
timestamp: 2026-01-24 18:51:52.197317
player_id: cpu_0
player_name: Sofia
action: take_discard
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: took 5 from discard
visible_opponents_json:
{"Maya": [{"rank": "A", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}], "Kenji": [{"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}], "Marcus": [{"rank": "5", "suit": "spades"}, {"rank": "3", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}]}


game_id: e1f12782-2733-400c-bb70-5983dabb0be6
timestamp: 2026-01-24 18:51:52.202996
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: swapped 5 for 8 at pos 0
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: e1f12782-2733-400c-bb70-5983dabb0be6
timestamp: 2026-01-24 18:51:52.208324
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: J
card_suit: spades
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}]

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


game_id: e1f12782-2733-400c-bb70-5983dabb0be6
timestamp: 2026-01-24 18:51:52.218954
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: e1f12782-2733-400c-bb70-5983dabb0be6
timestamp: 2026-01-24 18:51:52.224564
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped 6 for 5 at pos 0
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: e1f12782-2733-400c-bb70-5983dabb0be6
timestamp: 2026-01-24 18:51:52.230537
player_id: cpu_3
player_name: Marcus
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": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}]

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


game_id: e1f12782-2733-400c-bb70-5983dabb0be6
timestamp: 2026-01-24 18:51:52.236807
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: swapped 5 for 10 at pos 3
hand_json:
[{"rank": "5", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}]

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


game_id: e1f12782-2733-400c-bb70-5983dabb0be6
timestamp: 2026-01-24 18:51:52.243403
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: Q
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: e1f12782-2733-400c-bb70-5983dabb0be6
timestamp: 2026-01-24 18:51:52.255731
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Sofia": [{"rank": "5", "suit": "clubs"}, {"rank": "K", "suit": "spades"}], "Kenji": [{"rank": "6", "suit": "diamonds"}, {"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}], "Marcus": [{"rank": "5", "suit": "spades"}, {"rank": "3", "suit": "diamonds"}, {"rank": "5", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}]}


game_id: e1f12782-2733-400c-bb70-5983dabb0be6
timestamp: 2026-01-24 18:51:52.261448
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: swapped 4 for 9 at pos 4
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}]

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


game_id: e1f12782-2733-400c-bb70-5983dabb0be6
timestamp: 2026-01-24 18:51:52.267790
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: 10
card_suit: spades
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: e1f12782-2733-400c-bb70-5983dabb0be6
timestamp: 2026-01-24 18:51:52.280639
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}]

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


game_id: e1f12782-2733-400c-bb70-5983dabb0be6
timestamp: 2026-01-24 18:51:52.292742
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: 10
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Maya": [{"rank": "A", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}, {"rank": "4", "suit": "spades"}], "Kenji": [{"rank": "6", "suit": "diamonds"}, {"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}], "Marcus": [{"rank": "5", "suit": "spades"}, {"rank": "3", "suit": "diamonds"}, {"rank": "5", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}]}


game_id: e1f12782-2733-400c-bb70-5983dabb0be6
timestamp: 2026-01-24 18:51:52.314644
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 8
card_suit: diamonds
discard_top_json: {"rank": "2", "suit": "hearts"}
decision_reason: swapped 8 for 2 at pos 0
hand_json:
[{"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}]


game_id: e1f12782-2733-400c-bb70-5983dabb0be6
timestamp: 2026-01-24 18:51:52.320645
player_id: cpu_2
player_name: Kenji
action: take_discard
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: took 2 from discard
visible_opponents_json:
{"Sofia": [{"rank": "5", "suit": "clubs"}, {"rank": "K", "suit": "spades"}], "Maya": [{"rank": "8", "suit": "diamonds"}, {"rank": "A", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}, {"rank": "4", "suit": "spades"}], "Marcus": [{"rank": "5", "suit": "spades"}, {"rank": "3", "suit": "diamonds"}, {"rank": "5", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}]}


game_id: e1f12782-2733-400c-bb70-5983dabb0be6
timestamp: 2026-01-24 18:51:52.327022
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped 2 for 6 at pos 0
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: e1f12782-2733-400c-bb70-5983dabb0be6
timestamp: 2026-01-24 18:51:52.332794
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: Q
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Sofia": [{"rank": "5", "suit": "clubs"}, {"rank": "K", "suit": "spades"}], "Maya": [{"rank": "8", "suit": "diamonds"}, {"rank": "A", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}, {"rank": "4", "suit": "spades"}], "Kenji": [{"rank": "2", "suit": "hearts"}, {"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}]}


game_id: e1f12782-2733-400c-bb70-5983dabb0be6
timestamp: 2026-01-24 18:51:52.344519
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: J
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Maya": [{"rank": "8", "suit": "diamonds"}, {"rank": "A", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}, {"rank": "4", "suit": "spades"}], "Kenji": [{"rank": "2", "suit": "hearts"}, {"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}], "Marcus": [{"rank": "5", "suit": "spades"}, {"rank": "3", "suit": "diamonds"}, {"rank": "5", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}]}


game_id: e1f12782-2733-400c-bb70-5983dabb0be6
timestamp: 2026-01-24 18:51:52.355705
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: A
card_suit: spades
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}]

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


game_id: e1f12782-2733-400c-bb70-5983dabb0be6
timestamp: 2026-01-24 18:51:52.362061
player_id: cpu_1
player_name: Maya
action: swap
card_rank: A
card_suit: spades
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: swapped A for 8 at pos 0
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}]

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


game_id: e1f12782-2733-400c-bb70-5983dabb0be6
timestamp: 2026-01-24 18:51:52.367970
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: e1f12782-2733-400c-bb70-5983dabb0be6
timestamp: 2026-01-24 18:51:52.373579
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: swapped 4 for 9 at pos 1
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: e1f12782-2733-400c-bb70-5983dabb0be6
timestamp: 2026-01-24 18:51:52.379363
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Sofia": [{"rank": "5", "suit": "clubs"}, {"rank": "K", "suit": "spades"}], "Maya": [{"rank": "A", "suit": "spades"}, {"rank": "A", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}, {"rank": "4", "suit": "spades"}], "Kenji": [{"rank": "2", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}, {"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}]}


game_id: e1f12782-2733-400c-bb70-5983dabb0be6
timestamp: 2026-01-24 18:51:52.384950
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: swapped 5 for 4 at pos 5
hand_json:
[{"rank": "5", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: e1f12782-2733-400c-bb70-5983dabb0be6
timestamp: 2026-01-24 18:51:52.390422
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Maya": [{"rank": "A", "suit": "spades"}, {"rank": "A", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}, {"rank": "4", "suit": "spades"}], "Kenji": [{"rank": "2", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}, {"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}], "Marcus": [{"rank": "5", "suit": "spades"}, {"rank": "3", "suit": "diamonds"}, {"rank": "5", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}, {"rank": "5", "suit": "hearts"}]}


game_id: e1f12782-2733-400c-bb70-5983dabb0be6
timestamp: 2026-01-24 18:51:52.395934
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped 2 for 5 at pos 0
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: e1f12782-2733-400c-bb70-5983dabb0be6
timestamp: 2026-01-24 18:51:52.401721
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}]

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


game_id: e1f12782-2733-400c-bb70-5983dabb0be6
timestamp: 2026-01-24 18:51:52.413957
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: e1f12782-2733-400c-bb70-5983dabb0be6
timestamp: 2026-01-24 18:51:52.426364
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: Q
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: e1f12782-2733-400c-bb70-5983dabb0be6
timestamp: 2026-01-24 18:51:52.456247
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "3", "suit": "clubs"}
decision_reason: swapped 4 for 3 at pos 5
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}]


game_id: e1f12782-2733-400c-bb70-5983dabb0be6
timestamp: 2026-01-24 18:51:52.462048
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: 9
card_suit: clubs
discard_top_json: {"rank": "3", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Sofia": [{"rank": "2", "suit": "clubs"}, {"rank": "K", "suit": "spades"}], "Maya": [{"rank": "A", "suit": "spades"}, {"rank": "A", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}, {"rank": "4", "suit": "spades"}, {"rank": "4", "suit": "diamonds"}], "Marcus": [{"rank": "5", "suit": "spades"}, {"rank": "3", "suit": "diamonds"}, {"rank": "5", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}, {"rank": "5", "suit": "hearts"}]}


game_id: e1f12782-2733-400c-bb70-5983dabb0be6
timestamp: 2026-01-24 18:51:52.474147
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Sofia": [{"rank": "2", "suit": "clubs"}, {"rank": "K", "suit": "spades"}], "Maya": [{"rank": "A", "suit": "spades"}, {"rank": "A", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}, {"rank": "4", "suit": "spades"}, {"rank": "4", "suit": "diamonds"}], "Kenji": [{"rank": "2", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}, {"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}]}


game_id: e1f12782-2733-400c-bb70-5983dabb0be6
timestamp: 2026-01-24 18:51:52.480080
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped 4 for 5 at pos 0
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: e1f12782-2733-400c-bb70-5983dabb0be6
timestamp: 2026-01-24 18:51:52.485774
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: J
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Maya": [{"rank": "A", "suit": "spades"}, {"rank": "A", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}, {"rank": "4", "suit": "spades"}, {"rank": "4", "suit": "diamonds"}], "Kenji": [{"rank": "2", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}, {"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}], "Marcus": [{"rank": "4", "suit": "clubs"}, {"rank": "3", "suit": "diamonds"}, {"rank": "5", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}, {"rank": "5", "suit": "hearts"}]}


game_id: e1f12782-2733-400c-bb70-5983dabb0be6
timestamp: 2026-01-24 18:51:52.498547
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: J
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}]

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


game_id: e1f12782-2733-400c-bb70-5983dabb0be6
timestamp: 2026-01-24 18:51:52.510091
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: 9
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Sofia": [{"rank": "2", "suit": "clubs"}, {"rank": "K", "suit": "spades"}], "Maya": [{"rank": "A", "suit": "spades"}, {"rank": "A", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}, {"rank": "4", "suit": "spades"}, {"rank": "4", "suit": "diamonds"}], "Marcus": [{"rank": "4", "suit": "clubs"}, {"rank": "3", "suit": "diamonds"}, {"rank": "5", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}, {"rank": "5", "suit": "hearts"}]}


game_id: e1f12782-2733-400c-bb70-5983dabb0be6
timestamp: 2026-01-24 18:51:52.616267
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: swapped 7 for Q at pos 3
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}]


game_id: e1f12782-2733-400c-bb70-5983dabb0be6
timestamp: 2026-01-24 18:51:52.622036
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 8
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Sofia": [{"rank": "2", "suit": "clubs"}, {"rank": "K", "suit": "spades"}], "Maya": [{"rank": "A", "suit": "spades"}, {"rank": "A", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}, {"rank": "4", "suit": "spades"}, {"rank": "4", "suit": "diamonds"}], "Kenji": [{"rank": "2", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}, {"rank": "A", "suit": "hearts"}, {"rank": "7", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}]}


game_id: e1f12782-2733-400c-bb70-5983dabb0be6
timestamp: 2026-01-24 18:51:52.634057
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: J
card_suit: spades
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Maya": [{"rank": "A", "suit": "spades"}, {"rank": "A", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}, {"rank": "4", "suit": "spades"}, {"rank": "4", "suit": "diamonds"}], "Kenji": [{"rank": "2", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}, {"rank": "A", "suit": "hearts"}, {"rank": "7", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}], "Marcus": [{"rank": "4", "suit": "clubs"}, {"rank": "3", "suit": "diamonds"}, {"rank": "5", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}, {"rank": "5", "suit": "hearts"}]}


game_id: e1f12782-2733-400c-bb70-5983dabb0be6
timestamp: 2026-01-24 18:51:52.646204
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: Q
card_suit: spades
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Sofia": [{"rank": "2", "suit": "clubs"}, {"rank": "K", "suit": "spades"}], "Kenji": [{"rank": "2", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}, {"rank": "A", "suit": "hearts"}, {"rank": "7", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}], "Marcus": [{"rank": "4", "suit": "clubs"}, {"rank": "3", "suit": "diamonds"}, {"rank": "5", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}, {"rank": "5", "suit": "hearts"}]}


game_id: e1f12782-2733-400c-bb70-5983dabb0be6
timestamp: 2026-01-24 18:51:52.651691
player_id: cpu_1
player_name: Maya
action: discard
card_rank: Q
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: discarded Q
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}]

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


game_id: 89cd6774-f2a8-43c0-8725-dd495bc4c68e
timestamp: 2026-01-24 18:51:52.668110
player_id: cpu_0
player_name: River
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": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}]

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


game_id: 89cd6774-f2a8-43c0-8725-dd495bc4c68e
timestamp: 2026-01-24 18:51:52.679476
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: 9
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}]

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


game_id: 89cd6774-f2a8-43c0-8725-dd495bc4c68e
timestamp: 2026-01-24 18:51:52.691058
player_id: cpu_2
player_name: Diego
action: take_discard
card_rank: 9
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: took 9 from discard
hand_json:
[{"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}]

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


game_id: 89cd6774-f2a8-43c0-8725-dd495bc4c68e
timestamp: 2026-01-24 18:51:52.699589
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 9
card_suit: hearts
discard_top_json: {"rank": "3", "suit": "hearts"}
decision_reason: swapped 9 for 3 at pos 4
hand_json:
[{"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}]

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


game_id: 89cd6774-f2a8-43c0-8725-dd495bc4c68e
timestamp: 2026-01-24 18:51:52.705776
player_id: cpu_3
player_name: Kenji
action: take_discard
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}]

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


game_id: 89cd6774-f2a8-43c0-8725-dd495bc4c68e
timestamp: 2026-01-24 18:51:52.712588
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "2", "suit": "clubs"}
decision_reason: swapped 3 for 2 at pos 4
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}]

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


game_id: 89cd6774-f2a8-43c0-8725-dd495bc4c68e
timestamp: 2026-01-24 18:51:52.719164
player_id: cpu_0
player_name: River
action: take_discard
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: took 2 from discard
hand_json:
[{"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}]

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


game_id: 89cd6774-f2a8-43c0-8725-dd495bc4c68e
timestamp: 2026-01-24 18:51:52.725055
player_id: cpu_0
player_name: River
action: swap
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "A", "suit": "diamonds"}
decision_reason: swapped 2 for A at pos 4
hand_json:
[{"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}]

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


game_id: 89cd6774-f2a8-43c0-8725-dd495bc4c68e
timestamp: 2026-01-24 18:51:52.731243
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: took A from discard
hand_json:
[{"rank": "7", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}]

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


game_id: 89cd6774-f2a8-43c0-8725-dd495bc4c68e
timestamp: 2026-01-24 18:51:52.737001
player_id: cpu_1
player_name: Sage
action: swap
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped A for 5 at pos 3
hand_json:
[{"rank": "7", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}]

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


game_id: 89cd6774-f2a8-43c0-8725-dd495bc4c68e
timestamp: 2026-01-24 18:51:52.742385
player_id: cpu_2
player_name: Diego
action: draw_deck
card_rank: J
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}]

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


game_id: 89cd6774-f2a8-43c0-8725-dd495bc4c68e
timestamp: 2026-01-24 18:51:52.753695
player_id: cpu_3
player_name: Kenji
action: draw_deck
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}]

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


game_id: 89cd6774-f2a8-43c0-8725-dd495bc4c68e
timestamp: 2026-01-24 18:51:52.765235
player_id: cpu_0
player_name: River
action: draw_deck
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}]

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


game_id: 89cd6774-f2a8-43c0-8725-dd495bc4c68e
timestamp: 2026-01-24 18:51:52.770833
player_id: cpu_0
player_name: River
action: swap
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "4", "suit": "spades"}
decision_reason: swapped 2 for 4 at pos 3
hand_json:
[{"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}]

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


game_id: 89cd6774-f2a8-43c0-8725-dd495bc4c68e
timestamp: 2026-01-24 18:51:52.776789
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "4", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}]

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


game_id: 89cd6774-f2a8-43c0-8725-dd495bc4c68e
timestamp: 2026-01-24 18:51:52.782196
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: swapped 4 for J at pos 5
hand_json:
[{"rank": "7", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}]

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


game_id: 89cd6774-f2a8-43c0-8725-dd495bc4c68e
timestamp: 2026-01-24 18:51:52.787963
player_id: cpu_2
player_name: Diego
action: draw_deck
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"River": [{"rank": "K", "suit": "spades"}, {"rank": "2", "suit": "spades"}, {"rank": "2", "suit": "clubs"}], "Sage": [{"rank": "K", "suit": "diamonds"}, {"rank": "A", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}], "Kenji": [{"rank": "3", "suit": "diamonds"}, {"rank": "4", "suit": "clubs"}, {"rank": "3", "suit": "hearts"}]}


game_id: 89cd6774-f2a8-43c0-8725-dd495bc4c68e
timestamp: 2026-01-24 18:51:52.794246
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: swapped 6 for Q at pos 0
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}]

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


game_id: 89cd6774-f2a8-43c0-8725-dd495bc4c68e
timestamp: 2026-01-24 18:51:52.800174
player_id: cpu_3
player_name: Kenji
action: draw_deck
card_rank: Q
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"River": [{"rank": "K", "suit": "spades"}, {"rank": "2", "suit": "spades"}, {"rank": "2", "suit": "clubs"}], "Sage": [{"rank": "K", "suit": "diamonds"}, {"rank": "A", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}], "Diego": [{"rank": "6", "suit": "spades"}, {"rank": "9", "suit": "diamonds"}, {"rank": "6", "suit": "diamonds"}, {"rank": "9", "suit": "hearts"}]}


game_id: 89cd6774-f2a8-43c0-8725-dd495bc4c68e
timestamp: 2026-01-24 18:51:52.812172
player_id: cpu_0
player_name: River
action: draw_deck
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}]

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


game_id: 89cd6774-f2a8-43c0-8725-dd495bc4c68e
timestamp: 2026-01-24 18:51:52.818422
player_id: cpu_0
player_name: River
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: swapped 5 for 9 at pos 5
hand_json:
[{"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: 89cd6774-f2a8-43c0-8725-dd495bc4c68e
timestamp: 2026-01-24 18:51:52.824187
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: 10
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}]

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


game_id: 89cd6774-f2a8-43c0-8725-dd495bc4c68e
timestamp: 2026-01-24 18:51:52.835758
player_id: cpu_2
player_name: Diego
action: draw_deck
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}]

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


game_id: 89cd6774-f2a8-43c0-8725-dd495bc4c68e
timestamp: 2026-01-24 18:51:52.841332
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: swapped 2 for 9 at pos 1
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}]

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


game_id: 89cd6774-f2a8-43c0-8725-dd495bc4c68e
timestamp: 2026-01-24 18:51:52.846921
player_id: cpu_3
player_name: Kenji
action: draw_deck
card_rank: J
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"River": [{"rank": "K", "suit": "spades"}, {"rank": "2", "suit": "spades"}, {"rank": "2", "suit": "clubs"}, {"rank": "5", "suit": "clubs"}], "Sage": [{"rank": "K", "suit": "diamonds"}, {"rank": "A", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}], "Diego": [{"rank": "6", "suit": "spades"}, {"rank": "2", "suit": "diamonds"}, {"rank": "6", "suit": "diamonds"}, {"rank": "9", "suit": "hearts"}]}


game_id: 89cd6774-f2a8-43c0-8725-dd495bc4c68e
timestamp: 2026-01-24 18:51:52.858752
player_id: cpu_0
player_name: River
action: draw_deck
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: 89cd6774-f2a8-43c0-8725-dd495bc4c68e
timestamp: 2026-01-24 18:51:52.864462
player_id: cpu_0
player_name: River
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped 3 for 5 at pos 5
hand_json:
[{"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: 89cd6774-f2a8-43c0-8725-dd495bc4c68e
timestamp: 2026-01-24 18:51:52.870304
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"River": [{"rank": "K", "suit": "spades"}, {"rank": "2", "suit": "spades"}, {"rank": "2", "suit": "clubs"}, {"rank": "3", "suit": "clubs"}], "Diego": [{"rank": "6", "suit": "spades"}, {"rank": "2", "suit": "diamonds"}, {"rank": "6", "suit": "diamonds"}, {"rank": "9", "suit": "hearts"}], "Kenji": [{"rank": "3", "suit": "diamonds"}, {"rank": "4", "suit": "clubs"}, {"rank": "3", "suit": "hearts"}]}


game_id: 89cd6774-f2a8-43c0-8725-dd495bc4c68e
timestamp: 2026-01-24 18:51:52.876430
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped 5 for 7 at pos 0
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}]

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


game_id: 89cd6774-f2a8-43c0-8725-dd495bc4c68e
timestamp: 2026-01-24 18:51:52.881806
player_id: cpu_2
player_name: Diego
action: take_discard
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}]

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


game_id: 89cd6774-f2a8-43c0-8725-dd495bc4c68e
timestamp: 2026-01-24 18:51:52.887130
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: swapped 7 for 9 at pos 4
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}]

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


game_id: 89cd6774-f2a8-43c0-8725-dd495bc4c68e
timestamp: 2026-01-24 18:51:52.896656
player_id: cpu_3
player_name: Kenji
action: draw_deck
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"River": [{"rank": "K", "suit": "spades"}, {"rank": "2", "suit": "spades"}, {"rank": "2", "suit": "clubs"}, {"rank": "3", "suit": "clubs"}], "Sage": [{"rank": "5", "suit": "diamonds"}, {"rank": "K", "suit": "diamonds"}, {"rank": "A", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}], "Diego": [{"rank": "6", "suit": "spades"}, {"rank": "2", "suit": "diamonds"}, {"rank": "6", "suit": "diamonds"}, {"rank": "7", "suit": "spades"}]}


game_id: 89cd6774-f2a8-43c0-8725-dd495bc4c68e
timestamp: 2026-01-24 18:51:52.902867
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "K", "suit": "hearts"}
decision_reason: swapped 8 for K at pos 2
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}]

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


game_id: 89cd6774-f2a8-43c0-8725-dd495bc4c68e
timestamp: 2026-01-24 18:51:52.909239
player_id: cpu_0
player_name: River
action: take_discard
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: took K from discard
hand_json:
[{"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: 89cd6774-f2a8-43c0-8725-dd495bc4c68e
timestamp: 2026-01-24 18:51:52.915277
player_id: cpu_0
player_name: River
action: swap
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "3", "suit": "clubs"}
decision_reason: swapped K for 3 at pos 5
hand_json:
[{"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: 89cd6774-f2a8-43c0-8725-dd495bc4c68e
timestamp: 2026-01-24 18:51:52.920990
player_id: cpu_1
player_name: Sage
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": "5", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}]

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


game_id: 89cd6774-f2a8-43c0-8725-dd495bc4c68e
timestamp: 2026-01-24 18:51:52.927315
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped 3 for 5 at pos 0
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}]

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


game_id: 89cd6774-f2a8-43c0-8725-dd495bc4c68e
timestamp: 2026-01-24 18:51:52.933293
player_id: cpu_2
player_name: Diego
action: draw_deck
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}]

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


game_id: 89cd6774-f2a8-43c0-8725-dd495bc4c68e
timestamp: 2026-01-24 18:51:52.939604
player_id: cpu_2
player_name: Diego
action: swap
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped K for 7 at pos 4
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}]

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


game_id: 89cd6774-f2a8-43c0-8725-dd495bc4c68e
timestamp: 2026-01-24 18:51:52.945436
player_id: cpu_3
player_name: Kenji
action: draw_deck
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}]

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


game_id: 89cd6774-f2a8-43c0-8725-dd495bc4c68e
timestamp: 2026-01-24 18:51:52.950794
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: swapped 6 for 8 at pos 2
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}]

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


game_id: 89cd6774-f2a8-43c0-8725-dd495bc4c68e
timestamp: 2026-01-24 18:51:52.956157
player_id: cpu_0
player_name: River
action: draw_deck
card_rank: 10
card_suit: spades
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: 89cd6774-f2a8-43c0-8725-dd495bc4c68e
timestamp: 2026-01-24 18:51:52.967470
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: 8
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}]

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


game_id: 89cd6774-f2a8-43c0-8725-dd495bc4c68e
timestamp: 2026-01-24 18:51:52.978949
player_id: cpu_2
player_name: Diego
action: draw_deck
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": false}]

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


game_id: 89cd6774-f2a8-43c0-8725-dd495bc4c68e
timestamp: 2026-01-24 18:51:53.008300
player_id: cpu_0
player_name: River
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: swapped 3 for 10 at pos 0
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}]


game_id: 89cd6774-f2a8-43c0-8725-dd495bc4c68e
timestamp: 2026-01-24 18:51:53.014644
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: 8
card_suit: spades
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"River": [{"rank": "3", "suit": "spades"}, {"rank": "K", "suit": "spades"}, {"rank": "2", "suit": "spades"}, {"rank": "2", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}], "Diego": [{"rank": "6", "suit": "spades"}, {"rank": "2", "suit": "diamonds"}, {"rank": "6", "suit": "diamonds"}, {"rank": "K", "suit": "clubs"}], "Kenji": [{"rank": "3", "suit": "diamonds"}, {"rank": "6", "suit": "clubs"}, {"rank": "4", "suit": "clubs"}, {"rank": "3", "suit": "hearts"}]}


