# moves

game_id: 3dbffeed-730f-4bc9-b064-15532493f293
timestamp: 2026-01-25 00:08:42.221664
player_id: cpu_3
player_name: Marcus
action: take_discard
card_rank: 3
card_suit: spades
decision_reason: took 3 from discard
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": false}]

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


game_id: 3dbffeed-730f-4bc9-b064-15532493f293
timestamp: 2026-01-25 00:08:42.227428
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "4", "suit": "spades"}
decision_reason: swapped 3 for 4 at pos 3
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": false}]

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


game_id: 3dbffeed-730f-4bc9-b064-15532493f293
timestamp: 2026-01-25 00:08:42.233007
player_id: cpu_0
player_name: Sage
action: draw_deck
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}]

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


game_id: 3dbffeed-730f-4bc9-b064-15532493f293
timestamp: 2026-01-25 00:08:42.238959
player_id: cpu_0
player_name: Sage
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: swapped 5 for Q at pos 5
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: 3dbffeed-730f-4bc9-b064-15532493f293
timestamp: 2026-01-25 00:08:42.244892
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: K
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}]

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


game_id: 3dbffeed-730f-4bc9-b064-15532493f293
timestamp: 2026-01-25 00:08:42.250484
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: K
card_suit: spades
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: swapped K for 4 at pos 0
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}]

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


game_id: 3dbffeed-730f-4bc9-b064-15532493f293
timestamp: 2026-01-25 00:08:42.255993
player_id: cpu_2
player_name: Sofia
action: take_discard
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": true}]

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


game_id: 3dbffeed-730f-4bc9-b064-15532493f293
timestamp: 2026-01-25 00:08:42.261573
player_id: cpu_2
player_name: Sofia
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: swapped 4 for 8 at pos 2
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": true}]

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


game_id: 3dbffeed-730f-4bc9-b064-15532493f293
timestamp: 2026-01-25 00:08:42.267688
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": false}]

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


game_id: 3dbffeed-730f-4bc9-b064-15532493f293
timestamp: 2026-01-25 00:08:42.273637
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: swapped 5 for 10 at pos 4
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}]

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


game_id: 3dbffeed-730f-4bc9-b064-15532493f293
timestamp: 2026-01-25 00:08:42.280018
player_id: cpu_0
player_name: Sage
action: draw_deck
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: 3dbffeed-730f-4bc9-b064-15532493f293
timestamp: 2026-01-25 00:08:42.286237
player_id: cpu_0
player_name: Sage
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "K", "suit": "clubs"}
decision_reason: swapped A for K at pos 4
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: 3dbffeed-730f-4bc9-b064-15532493f293
timestamp: 2026-01-25 00:08:42.291811
player_id: cpu_1
player_name: Kenji
action: take_discard
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: took K from discard
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}]

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


game_id: 3dbffeed-730f-4bc9-b064-15532493f293
timestamp: 2026-01-25 00:08:42.297440
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "K", "suit": "hearts"}
decision_reason: swapped K for K at pos 3
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}]

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


game_id: 3dbffeed-730f-4bc9-b064-15532493f293
timestamp: 2026-01-25 00:08:42.302779
player_id: cpu_2
player_name: Sofia
action: take_discard
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: took K from discard
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": true}]

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


game_id: 3dbffeed-730f-4bc9-b064-15532493f293
timestamp: 2026-01-25 00:08:42.308549
player_id: cpu_2
player_name: Sofia
action: swap
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: swapped K for 8 at pos 5
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: 3dbffeed-730f-4bc9-b064-15532493f293
timestamp: 2026-01-25 00:08:42.314284
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 10
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}]

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


game_id: 3dbffeed-730f-4bc9-b064-15532493f293
timestamp: 2026-01-25 00:08:42.326157
player_id: cpu_0
player_name: Sage
action: draw_deck
card_rank: J
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: 3dbffeed-730f-4bc9-b064-15532493f293
timestamp: 2026-01-25 00:08:42.337396
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}]

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


game_id: 3dbffeed-730f-4bc9-b064-15532493f293
timestamp: 2026-01-25 00:08:42.342840
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: swapped 5 for 8 at pos 2
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}]

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


game_id: 3dbffeed-730f-4bc9-b064-15532493f293
timestamp: 2026-01-25 00:08:42.348529
player_id: cpu_2
player_name: Sofia
action: draw_deck
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: 3dbffeed-730f-4bc9-b064-15532493f293
timestamp: 2026-01-25 00:08:42.354005
player_id: cpu_2
player_name: Sofia
action: swap
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped 2 for 6 at pos 4
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: 3dbffeed-730f-4bc9-b064-15532493f293
timestamp: 2026-01-25 00:08:42.359837
player_id: cpu_3
player_name: Marcus
action: take_discard
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: took 6 from discard
visible_opponents_json:
{"Sage": [{"rank": "A", "suit": "spades"}, {"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "hearts"}, {"rank": "5", "suit": "clubs"}], "Kenji": [{"rank": "K", "suit": "spades"}, {"rank": "5", "suit": "spades"}, {"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}], "Sofia": [{"rank": "4", "suit": "hearts"}, {"rank": "2", "suit": "hearts"}, {"rank": "K", "suit": "hearts"}]}


game_id: 3dbffeed-730f-4bc9-b064-15532493f293
timestamp: 2026-01-25 00:08:42.365461
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "2", "suit": "clubs"}
decision_reason: swapped 6 for 2 at pos 0
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}]

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


game_id: 3dbffeed-730f-4bc9-b064-15532493f293
timestamp: 2026-01-25 00:08:42.370789
player_id: cpu_0
player_name: Sage
action: take_discard
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: took 2 from discard
visible_opponents_json:
{"Kenji": [{"rank": "K", "suit": "spades"}, {"rank": "5", "suit": "spades"}, {"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}], "Sofia": [{"rank": "4", "suit": "hearts"}, {"rank": "2", "suit": "hearts"}, {"rank": "K", "suit": "hearts"}], "Marcus": [{"rank": "6", "suit": "spades"}, {"rank": "A", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}, {"rank": "5", "suit": "diamonds"}]}


game_id: 3dbffeed-730f-4bc9-b064-15532493f293
timestamp: 2026-01-25 00:08:42.376326
player_id: cpu_0
player_name: Sage
action: swap
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped 2 for 5 at pos 5
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 3dbffeed-730f-4bc9-b064-15532493f293
timestamp: 2026-01-25 00:08:42.381940
player_id: cpu_1
player_name: Kenji
action: take_discard
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": false}]

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


game_id: 3dbffeed-730f-4bc9-b064-15532493f293
timestamp: 2026-01-25 00:08:42.387232
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: swapped 5 for J at pos 5
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: 3dbffeed-730f-4bc9-b064-15532493f293
timestamp: 2026-01-25 00:08:42.392992
player_id: cpu_2
player_name: Sofia
action: draw_deck
card_rank: 9
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: 3dbffeed-730f-4bc9-b064-15532493f293
timestamp: 2026-01-25 00:08:42.404236
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}]

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


game_id: 3dbffeed-730f-4bc9-b064-15532493f293
timestamp: 2026-01-25 00:08:42.409888
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: swapped 6 for 10 at pos 5
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}]

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


game_id: 3dbffeed-730f-4bc9-b064-15532493f293
timestamp: 2026-01-25 00:08:42.415855
player_id: cpu_0
player_name: Sage
action: draw_deck
card_rank: Q
card_suit: spades
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 3dbffeed-730f-4bc9-b064-15532493f293
timestamp: 2026-01-25 00:08:42.427652
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: 9
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: 3dbffeed-730f-4bc9-b064-15532493f293
timestamp: 2026-01-25 00:08:42.433324
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 9
card_suit: spades
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped 9 for 5 at pos 1
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: 3dbffeed-730f-4bc9-b064-15532493f293
timestamp: 2026-01-25 00:08:42.439097
player_id: cpu_2
player_name: Sofia
action: take_discard
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took 5 from discard
visible_opponents_json:
{"Sage": [{"rank": "A", "suit": "spades"}, {"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "clubs"}], "Kenji": [{"rank": "K", "suit": "spades"}, {"rank": "9", "suit": "spades"}, {"rank": "5", "suit": "spades"}, {"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}, {"rank": "5", "suit": "clubs"}], "Marcus": [{"rank": "6", "suit": "spades"}, {"rank": "A", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}, {"rank": "5", "suit": "diamonds"}, {"rank": "6", "suit": "hearts"}]}


game_id: 3dbffeed-730f-4bc9-b064-15532493f293
timestamp: 2026-01-25 00:08:42.445162
player_id: cpu_2
player_name: Sofia
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "3", "suit": "clubs"}
decision_reason: swapped 5 for 3 at pos 3
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: 3dbffeed-730f-4bc9-b064-15532493f293
timestamp: 2026-01-25 00:08:42.450696
player_id: cpu_3
player_name: Marcus
action: take_discard
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}]

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


game_id: 3dbffeed-730f-4bc9-b064-15532493f293
timestamp: 2026-01-25 00:08:42.455765
player_id: cpu_3
player_name: Marcus
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": "A", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}]

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


game_id: 3dbffeed-730f-4bc9-b064-15532493f293
timestamp: 2026-01-25 00:08:42.463469
player_id: cpu_0
player_name: Sage
action: take_discard
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took 6 from discard
visible_opponents_json:
{"Kenji": [{"rank": "K", "suit": "spades"}, {"rank": "9", "suit": "spades"}, {"rank": "5", "suit": "spades"}, {"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}, {"rank": "5", "suit": "clubs"}], "Sofia": [{"rank": "4", "suit": "hearts"}, {"rank": "5", "suit": "hearts"}, {"rank": "2", "suit": "hearts"}, {"rank": "K", "suit": "hearts"}], "Marcus": [{"rank": "3", "suit": "clubs"}, {"rank": "A", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}, {"rank": "5", "suit": "diamonds"}, {"rank": "6", "suit": "hearts"}]}


game_id: 3dbffeed-730f-4bc9-b064-15532493f293
timestamp: 2026-01-25 00:08:42.469516
player_id: cpu_0
player_name: Sage
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 6 for 7 at pos 0
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 85fa9440-effa-4557-84c5-114ca91b8bd5
timestamp: 2026-01-25 00:08:42.489386
player_id: cpu_0
player_name: Priya
action: take_discard
card_rank: 5
card_suit: diamonds
decision_reason: took 5 from discard
hand_json:
[{"rank": "6", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: 85fa9440-effa-4557-84c5-114ca91b8bd5
timestamp: 2026-01-25 00:08:42.494850
player_id: cpu_0
player_name: Priya
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: swapped 5 for Q at pos 2
hand_json:
[{"rank": "6", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: 85fa9440-effa-4557-84c5-114ca91b8bd5
timestamp: 2026-01-25 00:08:42.501477
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": true}]

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


game_id: 85fa9440-effa-4557-84c5-114ca91b8bd5
timestamp: 2026-01-25 00:08:42.507228
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: swapped 2 for J at pos 5
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: 85fa9440-effa-4557-84c5-114ca91b8bd5
timestamp: 2026-01-25 00:08:42.513037
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: J
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "10", "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": "2", "suit": "clubs", "face_up": true}]

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


game_id: 85fa9440-effa-4557-84c5-114ca91b8bd5
timestamp: 2026-01-25 00:08:42.524654
player_id: cpu_3
player_name: River
action: take_discard
card_rank: J
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: took J from discard
hand_json:
[{"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: 85fa9440-effa-4557-84c5-114ca91b8bd5
timestamp: 2026-01-25 00:08:42.530140
player_id: cpu_3
player_name: River
action: swap
card_rank: J
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: swapped J for 9 at pos 4
hand_json:
[{"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: 85fa9440-effa-4557-84c5-114ca91b8bd5
timestamp: 2026-01-25 00:08:42.535875
player_id: cpu_0
player_name: Priya
action: draw_deck
card_rank: 8
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: 85fa9440-effa-4557-84c5-114ca91b8bd5
timestamp: 2026-01-25 00:08:42.550162
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: 85fa9440-effa-4557-84c5-114ca91b8bd5
timestamp: 2026-01-25 00:08:42.559442
player_id: cpu_1
player_name: Maya
action: swap
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped A for 7 at pos 0
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: 85fa9440-effa-4557-84c5-114ca91b8bd5
timestamp: 2026-01-25 00:08:42.565316
player_id: cpu_2
player_name: Sage
action: take_discard
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "10", "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": "2", "suit": "clubs", "face_up": true}]

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


game_id: 85fa9440-effa-4557-84c5-114ca91b8bd5
timestamp: 2026-01-25 00:08:42.571153
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: swapped 7 for 10 at pos 1
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "7", "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": "2", "suit": "clubs", "face_up": true}]

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


game_id: 85fa9440-effa-4557-84c5-114ca91b8bd5
timestamp: 2026-01-25 00:08:42.577009
player_id: cpu_3
player_name: River
action: draw_deck
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: 85fa9440-effa-4557-84c5-114ca91b8bd5
timestamp: 2026-01-25 00:08:42.582656
player_id: cpu_3
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 1
hand_json:
[{"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: 85fa9440-effa-4557-84c5-114ca91b8bd5
timestamp: 2026-01-25 00:08:42.588034
player_id: cpu_0
player_name: Priya
action: draw_deck
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Maya": [{"rank": "A", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}], "Sage": [{"rank": "7", "suit": "diamonds"}, {"rank": "2", "suit": "clubs"}], "River": [{"rank": "4", "suit": "diamonds"}, {"rank": "J", "suit": "hearts"}, {"rank": "K", "suit": "spades"}]}


game_id: 85fa9440-effa-4557-84c5-114ca91b8bd5
timestamp: 2026-01-25 00:08:42.593640
player_id: cpu_0
player_name: Priya
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped 4 for 5 at pos 2
hand_json:
[{"rank": "6", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: 85fa9440-effa-4557-84c5-114ca91b8bd5
timestamp: 2026-01-25 00:08:42.599625
player_id: cpu_1
player_name: Maya
action: take_discard
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: 85fa9440-effa-4557-84c5-114ca91b8bd5
timestamp: 2026-01-25 00:08:42.605221
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: swapped 5 for J at pos 2
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: 85fa9440-effa-4557-84c5-114ca91b8bd5
timestamp: 2026-01-25 00:08:42.610979
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: 10
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "7", "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": "2", "suit": "clubs", "face_up": true}]

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


game_id: 85fa9440-effa-4557-84c5-114ca91b8bd5
timestamp: 2026-01-25 00:08:42.622687
player_id: cpu_3
player_name: River
action: draw_deck
card_rank: 8
card_suit: spades
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: 85fa9440-effa-4557-84c5-114ca91b8bd5
timestamp: 2026-01-25 00:08:42.628378
player_id: cpu_3
player_name: River
action: swap
card_rank: 8
card_suit: spades
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: swapped 8 for J at pos 4
hand_json:
[{"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: 85fa9440-effa-4557-84c5-114ca91b8bd5
timestamp: 2026-01-25 00:08:42.633947
player_id: cpu_0
player_name: Priya
action: draw_deck
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: 85fa9440-effa-4557-84c5-114ca91b8bd5
timestamp: 2026-01-25 00:08:42.645158
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: 85fa9440-effa-4557-84c5-114ca91b8bd5
timestamp: 2026-01-25 00:08:42.651037
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "3", "suit": "hearts"}
decision_reason: swapped 6 for 3 at pos 4
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: 85fa9440-effa-4557-84c5-114ca91b8bd5
timestamp: 2026-01-25 00:08:42.656620
player_id: cpu_2
player_name: Sage
action: take_discard
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: took 3 from discard
visible_opponents_json:
{"Priya": [{"rank": "4", "suit": "clubs"}, {"rank": "K", "suit": "diamonds"}], "Maya": [{"rank": "A", "suit": "diamonds"}, {"rank": "5", "suit": "diamonds"}, {"rank": "6", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}], "River": [{"rank": "4", "suit": "diamonds"}, {"rank": "8", "suit": "spades"}, {"rank": "K", "suit": "spades"}]}


game_id: 85fa9440-effa-4557-84c5-114ca91b8bd5
timestamp: 2026-01-25 00:08:42.662152
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 3 for 7 at pos 1
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "3", "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": "2", "suit": "clubs", "face_up": true}]

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


game_id: 85fa9440-effa-4557-84c5-114ca91b8bd5
timestamp: 2026-01-25 00:08:42.667845
player_id: cpu_3
player_name: River
action: take_discard
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: 85fa9440-effa-4557-84c5-114ca91b8bd5
timestamp: 2026-01-25 00:08:42.673672
player_id: cpu_3
player_name: River
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: swapped 7 for 8 at pos 4
hand_json:
[{"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: 85fa9440-effa-4557-84c5-114ca91b8bd5
timestamp: 2026-01-25 00:08:42.679822
player_id: cpu_0
player_name: Priya
action: draw_deck
card_rank: Q
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Maya": [{"rank": "A", "suit": "diamonds"}, {"rank": "5", "suit": "diamonds"}, {"rank": "6", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}], "Sage": [{"rank": "3", "suit": "hearts"}, {"rank": "2", "suit": "clubs"}], "River": [{"rank": "4", "suit": "diamonds"}, {"rank": "7", "suit": "diamonds"}, {"rank": "K", "suit": "spades"}]}


game_id: 85fa9440-effa-4557-84c5-114ca91b8bd5
timestamp: 2026-01-25 00:08:42.691501
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: 10
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: 85fa9440-effa-4557-84c5-114ca91b8bd5
timestamp: 2026-01-25 00:08:42.702894
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "3", "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": "2", "suit": "clubs", "face_up": true}]

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


game_id: 85fa9440-effa-4557-84c5-114ca91b8bd5
timestamp: 2026-01-25 00:08:42.708493
player_id: cpu_2
player_name: Sage
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "3", "suit": "hearts"}
decision_reason: swapped A for 3 at pos 1
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "A", "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": "2", "suit": "clubs", "face_up": true}]

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


game_id: 85fa9440-effa-4557-84c5-114ca91b8bd5
timestamp: 2026-01-25 00:08:42.714194
player_id: cpu_3
player_name: River
action: take_discard
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: 85fa9440-effa-4557-84c5-114ca91b8bd5
timestamp: 2026-01-25 00:08:42.719781
player_id: cpu_3
player_name: River
action: swap
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 3 for 7 at pos 4
hand_json:
[{"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: 85fa9440-effa-4557-84c5-114ca91b8bd5
timestamp: 2026-01-25 00:08:42.725325
player_id: cpu_0
player_name: Priya
action: take_discard
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: took 7 from discard
visible_opponents_json:
{"Maya": [{"rank": "A", "suit": "diamonds"}, {"rank": "5", "suit": "diamonds"}, {"rank": "6", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}], "Sage": [{"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "clubs"}], "River": [{"rank": "4", "suit": "diamonds"}, {"rank": "3", "suit": "hearts"}, {"rank": "K", "suit": "spades"}]}


game_id: 85fa9440-effa-4557-84c5-114ca91b8bd5
timestamp: 2026-01-25 00:08:42.730962
player_id: cpu_0
player_name: Priya
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: swapped 7 for 9 at pos 4
hand_json:
[{"rank": "6", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: 85fa9440-effa-4557-84c5-114ca91b8bd5
timestamp: 2026-01-25 00:08:42.736897
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Priya": [{"rank": "4", "suit": "clubs"}, {"rank": "K", "suit": "diamonds"}, {"rank": "7", "suit": "diamonds"}], "Sage": [{"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "clubs"}], "River": [{"rank": "4", "suit": "diamonds"}, {"rank": "3", "suit": "hearts"}, {"rank": "K", "suit": "spades"}]}


game_id: 85fa9440-effa-4557-84c5-114ca91b8bd5
timestamp: 2026-01-25 00:08:42.743022
player_id: cpu_1
player_name: Maya
action: swap
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped K for 6 at pos 4
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: 85fa9440-effa-4557-84c5-114ca91b8bd5
timestamp: 2026-01-25 00:08:42.748672
player_id: cpu_2
player_name: Sage
action: take_discard
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "A", "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": "2", "suit": "clubs", "face_up": true}]

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


game_id: 85fa9440-effa-4557-84c5-114ca91b8bd5
timestamp: 2026-01-25 00:08:42.754069
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "A", "suit": "clubs"}
decision_reason: swapped 6 for A at pos 0
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "A", "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": "2", "suit": "clubs", "face_up": true}]

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


game_id: 85fa9440-effa-4557-84c5-114ca91b8bd5
timestamp: 2026-01-25 00:08:42.759574
player_id: cpu_3
player_name: River
action: take_discard
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: took A from discard
hand_json:
[{"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: 85fa9440-effa-4557-84c5-114ca91b8bd5
timestamp: 2026-01-25 00:08:42.765192
player_id: cpu_3
player_name: River
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": "8", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: 85fa9440-effa-4557-84c5-114ca91b8bd5
timestamp: 2026-01-25 00:08:42.770883
player_id: cpu_0
player_name: Priya
action: take_discard
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "6", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}]

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


game_id: 85fa9440-effa-4557-84c5-114ca91b8bd5
timestamp: 2026-01-25 00:08:42.776599
player_id: cpu_0
player_name: Priya
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 4 for 6 at pos 5
hand_json:
[{"rank": "6", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}]

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


game_id: 85fa9440-effa-4557-84c5-114ca91b8bd5
timestamp: 2026-01-25 00:08:42.782366
player_id: cpu_1
player_name: Maya
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: 85fa9440-effa-4557-84c5-114ca91b8bd5
timestamp: 2026-01-25 00:08:42.788437
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: swapped 6 for Q at pos 1
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: 85fa9440-effa-4557-84c5-114ca91b8bd5
timestamp: 2026-01-25 00:08:42.794221
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "A", "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": "2", "suit": "clubs", "face_up": true}]

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


game_id: 85fa9440-effa-4557-84c5-114ca91b8bd5
timestamp: 2026-01-25 00:08:42.800068
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: swapped 7 for 10 at pos 4
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 85fa9440-effa-4557-84c5-114ca91b8bd5
timestamp: 2026-01-25 00:08:42.805879
player_id: cpu_3
player_name: River
action: draw_deck
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: 85fa9440-effa-4557-84c5-114ca91b8bd5
timestamp: 2026-01-25 00:08:42.811553
player_id: cpu_3
player_name: River
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: swapped 6 for 9 at pos 3
hand_json:
[{"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: 85fa9440-effa-4557-84c5-114ca91b8bd5
timestamp: 2026-01-25 00:08:42.817068
player_id: cpu_0
player_name: Priya
action: draw_deck
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}]

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


game_id: 85fa9440-effa-4557-84c5-114ca91b8bd5
timestamp: 2026-01-25 00:08:42.822702
player_id: cpu_0
player_name: Priya
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 3 for 7 at pos 4
hand_json:
[{"rank": "6", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}]

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


game_id: 85fa9440-effa-4557-84c5-114ca91b8bd5
timestamp: 2026-01-25 00:08:42.830123
player_id: cpu_1
player_name: Maya
action: take_discard
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: 85fa9440-effa-4557-84c5-114ca91b8bd5
timestamp: 2026-01-25 00:08:42.836047
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: swapped 7 for Q at pos 3
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: 85fa9440-effa-4557-84c5-114ca91b8bd5
timestamp: 2026-01-25 00:08:42.841906
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 85fa9440-effa-4557-84c5-114ca91b8bd5
timestamp: 2026-01-25 00:08:42.847745
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped 4 for 7 at pos 4
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 85fa9440-effa-4557-84c5-114ca91b8bd5
timestamp: 2026-01-25 00:08:42.853744
player_id: cpu_3
player_name: River
action: take_discard
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: 85fa9440-effa-4557-84c5-114ca91b8bd5
timestamp: 2026-01-25 00:08:42.859202
player_id: cpu_3
player_name: River
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: swapped 7 for 8 at pos 0
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: 85fa9440-effa-4557-84c5-114ca91b8bd5
timestamp: 2026-01-25 00:08:42.864922
player_id: cpu_0
player_name: Priya
action: draw_deck
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}]

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


game_id: 85fa9440-effa-4557-84c5-114ca91b8bd5
timestamp: 2026-01-25 00:08:42.871115
player_id: cpu_0
player_name: Priya
action: swap
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped 8 for 6 at pos 0
hand_json:
[{"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}]

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


game_id: e6739d3e-7a63-4cfd-9488-6da27f4b6424
timestamp: 2026-01-25 00:08:42.888589
player_id: cpu_0
player_name: Kenji
action: take_discard
card_rank: K
card_suit: diamonds
decision_reason: took K from discard
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}]

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


game_id: e6739d3e-7a63-4cfd-9488-6da27f4b6424
timestamp: 2026-01-25 00:08:42.894470
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "3", "suit": "spades"}
decision_reason: swapped K for 3 at pos 0
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}]

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


game_id: e6739d3e-7a63-4cfd-9488-6da27f4b6424
timestamp: 2026-01-25 00:08:42.901454
player_id: cpu_1
player_name: Priya
action: take_discard
card_rank: 3
card_suit: spades
decision_reason: took 3 from discard
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": true}]

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


game_id: e6739d3e-7a63-4cfd-9488-6da27f4b6424
timestamp: 2026-01-25 00:08:42.907724
player_id: cpu_1
player_name: Priya
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "K", "suit": "spades"}
decision_reason: swapped 3 for K at pos 4
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": true}]

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


game_id: e6739d3e-7a63-4cfd-9488-6da27f4b6424
timestamp: 2026-01-25 00:08:42.913310
player_id: cpu_2
player_name: Sofia
action: take_discard
card_rank: K
card_suit: spades
decision_reason: took K from discard
hand_json:
[{"rank": "9", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}]

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


game_id: e6739d3e-7a63-4cfd-9488-6da27f4b6424
timestamp: 2026-01-25 00:08:42.918729
player_id: cpu_2
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 1
hand_json:
[{"rank": "9", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}]

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


game_id: e6739d3e-7a63-4cfd-9488-6da27f4b6424
timestamp: 2026-01-25 00:08:42.924438
player_id: cpu_3
player_name: Diego
action: draw_deck
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}]

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


game_id: e6739d3e-7a63-4cfd-9488-6da27f4b6424
timestamp: 2026-01-25 00:08:42.930096
player_id: cpu_3
player_name: Diego
action: swap
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped 2 for 7 at pos 5
hand_json:
[{"rank": "5", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: e6739d3e-7a63-4cfd-9488-6da27f4b6424
timestamp: 2026-01-25 00:08:42.935789
player_id: cpu_0
player_name: Kenji
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": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}]

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


game_id: e6739d3e-7a63-4cfd-9488-6da27f4b6424
timestamp: 2026-01-25 00:08:42.947252
player_id: cpu_1
player_name: Priya
action: take_discard
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": true}]

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


game_id: e6739d3e-7a63-4cfd-9488-6da27f4b6424
timestamp: 2026-01-25 00:08:42.952921
player_id: cpu_1
player_name: Priya
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: swapped 6 for J at pos 5
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}]

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


game_id: e6739d3e-7a63-4cfd-9488-6da27f4b6424
timestamp: 2026-01-25 00:08:42.958796
player_id: cpu_2
player_name: Sofia
action: draw_deck
card_rank: 8
card_suit: spades
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "9", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}]

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


game_id: e6739d3e-7a63-4cfd-9488-6da27f4b6424
timestamp: 2026-01-25 00:08:42.970283
player_id: cpu_3
player_name: Diego
action: draw_deck
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: e6739d3e-7a63-4cfd-9488-6da27f4b6424
timestamp: 2026-01-25 00:08:42.975973
player_id: cpu_3
player_name: Diego
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped 3 for 5 at pos 0
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: e6739d3e-7a63-4cfd-9488-6da27f4b6424
timestamp: 2026-01-25 00:08:42.981350
player_id: cpu_0
player_name: Kenji
action: take_discard
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: took 5 from discard
visible_opponents_json:
{"Priya": [{"rank": "3", "suit": "hearts"}, {"rank": "3", "suit": "spades"}, {"rank": "6", "suit": "spades"}], "Sofia": [{"rank": "K", "suit": "spades"}, {"rank": "7", "suit": "spades"}], "Diego": [{"rank": "3", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}]}


game_id: e6739d3e-7a63-4cfd-9488-6da27f4b6424
timestamp: 2026-01-25 00:08:42.986921
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "4", "suit": "spades"}
decision_reason: swapped 5 for 4 at pos 3
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}]

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


game_id: e6739d3e-7a63-4cfd-9488-6da27f4b6424
timestamp: 2026-01-25 00:08:42.992803
player_id: cpu_1
player_name: Priya
action: take_discard
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}]

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


game_id: e6739d3e-7a63-4cfd-9488-6da27f4b6424
timestamp: 2026-01-25 00:08:42.998649
player_id: cpu_1
player_name: Priya
action: swap
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped 4 for 6 at pos 5
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: e6739d3e-7a63-4cfd-9488-6da27f4b6424
timestamp: 2026-01-25 00:08:43.004629
player_id: cpu_2
player_name: Sofia
action: take_discard
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: took 6 from discard
visible_opponents_json:
{"Kenji": [{"rank": "K", "suit": "diamonds"}, {"rank": "5", "suit": "spades"}, {"rank": "2", "suit": "spades"}], "Priya": [{"rank": "3", "suit": "hearts"}, {"rank": "3", "suit": "spades"}, {"rank": "4", "suit": "spades"}], "Diego": [{"rank": "3", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}]}


game_id: e6739d3e-7a63-4cfd-9488-6da27f4b6424
timestamp: 2026-01-25 00:08:43.010468
player_id: cpu_2
player_name: Sofia
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: swapped 6 for 9 at pos 4
hand_json:
[{"rank": "9", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}]

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


game_id: e6739d3e-7a63-4cfd-9488-6da27f4b6424
timestamp: 2026-01-25 00:08:43.017810
player_id: cpu_3
player_name: Diego
action: draw_deck
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: e6739d3e-7a63-4cfd-9488-6da27f4b6424
timestamp: 2026-01-25 00:08:43.023920
player_id: cpu_3
player_name: Diego
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "3", "suit": "clubs"}
decision_reason: swapped A for 3 at pos 0
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: e6739d3e-7a63-4cfd-9488-6da27f4b6424
timestamp: 2026-01-25 00:08:43.029723
player_id: cpu_0
player_name: Kenji
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": "K", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}]

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


game_id: e6739d3e-7a63-4cfd-9488-6da27f4b6424
timestamp: 2026-01-25 00:08:43.035415
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped 3 for 5 at pos 3
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}]

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


game_id: e6739d3e-7a63-4cfd-9488-6da27f4b6424
timestamp: 2026-01-25 00:08:43.040949
player_id: cpu_1
player_name: Priya
action: take_discard
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: e6739d3e-7a63-4cfd-9488-6da27f4b6424
timestamp: 2026-01-25 00:08:43.046693
player_id: cpu_1
player_name: Priya
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 5 for 6 at pos 3
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: e6739d3e-7a63-4cfd-9488-6da27f4b6424
timestamp: 2026-01-25 00:08:43.052222
player_id: cpu_2
player_name: Sofia
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "9", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}]

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


game_id: e6739d3e-7a63-4cfd-9488-6da27f4b6424
timestamp: 2026-01-25 00:08:43.057889
player_id: cpu_2
player_name: Sofia
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped 6 for 5 at pos 5
hand_json:
[{"rank": "9", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: e6739d3e-7a63-4cfd-9488-6da27f4b6424
timestamp: 2026-01-25 00:08:43.063628
player_id: cpu_3
player_name: Diego
action: take_discard
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: e6739d3e-7a63-4cfd-9488-6da27f4b6424
timestamp: 2026-01-25 00:08:43.068929
player_id: cpu_3
player_name: Diego
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "A", "suit": "clubs"}
decision_reason: swapped 5 for A at pos 1
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: e6739d3e-7a63-4cfd-9488-6da27f4b6424
timestamp: 2026-01-25 00:08:43.074676
player_id: cpu_0
player_name: Kenji
action: draw_deck
card_rank: Q
card_suit: spades
discard_top_json: {"rank": "A", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}]

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


game_id: e6739d3e-7a63-4cfd-9488-6da27f4b6424
timestamp: 2026-01-25 00:08:43.080464
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: Q
card_suit: spades
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: swapped Q for 10 at pos 5
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": true}]

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


game_id: e6739d3e-7a63-4cfd-9488-6da27f4b6424
timestamp: 2026-01-25 00:08:43.086243
player_id: cpu_1
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": "K", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: e6739d3e-7a63-4cfd-9488-6da27f4b6424
timestamp: 2026-01-25 00:08:43.091987
player_id: cpu_1
player_name: Priya
action: swap
card_rank: 8
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 8 for 7 at pos 2
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: e6739d3e-7a63-4cfd-9488-6da27f4b6424
timestamp: 2026-01-25 00:08:43.097628
player_id: cpu_2
player_name: Sofia
action: take_discard
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "9", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: e6739d3e-7a63-4cfd-9488-6da27f4b6424
timestamp: 2026-01-25 00:08:43.103248
player_id: cpu_2
player_name: Sofia
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: swapped 7 for 9 at pos 0
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: e6739d3e-7a63-4cfd-9488-6da27f4b6424
timestamp: 2026-01-25 00:08:43.108937
player_id: cpu_3
player_name: Diego
action: draw_deck
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: e6739d3e-7a63-4cfd-9488-6da27f4b6424
timestamp: 2026-01-25 00:08:43.114788
player_id: cpu_3
player_name: Diego
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped 4 for 5 at pos 3
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: e6739d3e-7a63-4cfd-9488-6da27f4b6424
timestamp: 2026-01-25 00:08:43.120472
player_id: cpu_0
player_name: Kenji
action: take_discard
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": true}]

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


game_id: e6739d3e-7a63-4cfd-9488-6da27f4b6424
timestamp: 2026-01-25 00:08:43.126557
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: swapped 5 for Q at pos 5
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: e6739d3e-7a63-4cfd-9488-6da27f4b6424
timestamp: 2026-01-25 00:08:43.132166
player_id: cpu_1
player_name: Priya
action: draw_deck
card_rank: J
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: e6739d3e-7a63-4cfd-9488-6da27f4b6424
timestamp: 2026-01-25 00:08:43.143714
player_id: cpu_2
player_name: Sofia
action: draw_deck
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: e6739d3e-7a63-4cfd-9488-6da27f4b6424
timestamp: 2026-01-25 00:08:43.149358
player_id: cpu_2
player_name: Sofia
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 5 for 7 at pos 0
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: e6739d3e-7a63-4cfd-9488-6da27f4b6424
timestamp: 2026-01-25 00:08:43.154865
player_id: cpu_3
player_name: Diego
action: take_discard
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: e6739d3e-7a63-4cfd-9488-6da27f4b6424
timestamp: 2026-01-25 00:08:43.160843
player_id: cpu_3
player_name: Diego
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: swapped 7 for 10 at pos 4
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: e6739d3e-7a63-4cfd-9488-6da27f4b6424
timestamp: 2026-01-25 00:08:43.166897
player_id: cpu_0
player_name: Kenji
action: draw_deck
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: e6739d3e-7a63-4cfd-9488-6da27f4b6424
timestamp: 2026-01-25 00:08:43.173066
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "A", "suit": "diamonds"}
decision_reason: swapped 6 for A at pos 2
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: e6739d3e-7a63-4cfd-9488-6da27f4b6424
timestamp: 2026-01-25 00:08:43.178785
player_id: cpu_1
player_name: Priya
action: take_discard
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: took A from discard
visible_opponents_json:
{"Kenji": [{"rank": "K", "suit": "diamonds"}, {"rank": "6", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}, {"rank": "2", "suit": "spades"}, {"rank": "5", "suit": "hearts"}], "Sofia": [{"rank": "5", "suit": "diamonds"}, {"rank": "K", "suit": "spades"}, {"rank": "7", "suit": "spades"}, {"rank": "6", "suit": "spades"}, {"rank": "6", "suit": "clubs"}], "Diego": [{"rank": "A", "suit": "hearts"}, {"rank": "5", "suit": "clubs"}, {"rank": "4", "suit": "clubs"}, {"rank": "7", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}]}


game_id: e6739d3e-7a63-4cfd-9488-6da27f4b6424
timestamp: 2026-01-25 00:08:43.184718
player_id: cpu_1
player_name: Priya
action: swap
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: swapped A for 8 at pos 2
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: e6739d3e-7a63-4cfd-9488-6da27f4b6424
timestamp: 2026-01-25 00:08:43.190753
player_id: cpu_2
player_name: Sofia
action: draw_deck
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: e6739d3e-7a63-4cfd-9488-6da27f4b6424
timestamp: 2026-01-25 00:08:43.204512
player_id: cpu_3
player_name: Diego
action: draw_deck
card_rank: J
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: e6739d3e-7a63-4cfd-9488-6da27f4b6424
timestamp: 2026-01-25 00:08:43.216336
player_id: cpu_0
player_name: Kenji
action: draw_deck
card_rank: 8
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: e6739d3e-7a63-4cfd-9488-6da27f4b6424
timestamp: 2026-01-25 00:08:43.222344
player_id: cpu_0
player_name: Kenji
action: swap
card_rank: 8
card_suit: clubs
discard_top_json: {"rank": "2", "suit": "clubs"}
decision_reason: swapped 8 for 2 at pos 1
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: e6739d3e-7a63-4cfd-9488-6da27f4b6424
timestamp: 2026-01-25 00:08:43.227964
player_id: cpu_1
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": "K", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: e6739d3e-7a63-4cfd-9488-6da27f4b6424
timestamp: 2026-01-25 00:08:43.233769
player_id: cpu_1
player_name: Priya
action: swap
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped 2 for 5 at pos 3
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: e6739d3e-7a63-4cfd-9488-6da27f4b6424
timestamp: 2026-01-25 00:08:43.239441
player_id: cpu_2
player_name: Sofia
action: take_discard
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: took 5 from discard
visible_opponents_json:
{"Kenji": [{"rank": "K", "suit": "diamonds"}, {"rank": "8", "suit": "clubs"}, {"rank": "6", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}, {"rank": "2", "suit": "spades"}, {"rank": "5", "suit": "hearts"}], "Priya": [{"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "diamonds"}, {"rank": "2", "suit": "clubs"}, {"rank": "3", "suit": "spades"}, {"rank": "4", "suit": "spades"}], "Diego": [{"rank": "A", "suit": "hearts"}, {"rank": "5", "suit": "clubs"}, {"rank": "4", "suit": "clubs"}, {"rank": "7", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}]}


game_id: e6739d3e-7a63-4cfd-9488-6da27f4b6424
timestamp: 2026-01-25 00:08:43.249110
player_id: cpu_2
player_name: Sofia
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped 5 for 7 at pos 3
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: e6739d3e-7a63-4cfd-9488-6da27f4b6424
timestamp: 2026-01-25 00:08:43.255097
player_id: cpu_3
player_name: Diego
action: take_discard
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: took 7 from discard
visible_opponents_json:
{"Kenji": [{"rank": "K", "suit": "diamonds"}, {"rank": "8", "suit": "clubs"}, {"rank": "6", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}, {"rank": "2", "suit": "spades"}, {"rank": "5", "suit": "hearts"}], "Priya": [{"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "diamonds"}, {"rank": "2", "suit": "clubs"}, {"rank": "3", "suit": "spades"}, {"rank": "4", "suit": "spades"}], "Sofia": [{"rank": "5", "suit": "diamonds"}, {"rank": "K", "suit": "spades"}, {"rank": "5", "suit": "spades"}, {"rank": "6", "suit": "spades"}, {"rank": "6", "suit": "clubs"}]}


game_id: e6739d3e-7a63-4cfd-9488-6da27f4b6424
timestamp: 2026-01-25 00:08:43.261272
player_id: cpu_3
player_name: Diego
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: swapped 7 for 9 at pos 2
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}]

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


game_id: 7d75a6c1-a6a3-427f-a181-3e64efc8066a
timestamp: 2026-01-25 00:08:43.278329
player_id: cpu_0
player_name: Marcus
action: take_discard
card_rank: A
card_suit: diamonds
decision_reason: took A from discard
hand_json:
[{"rank": "4", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}]

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


game_id: 7d75a6c1-a6a3-427f-a181-3e64efc8066a
timestamp: 2026-01-25 00:08:43.283800
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: swapped A for Q at pos 3
hand_json:
[{"rank": "4", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}]

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


game_id: 7d75a6c1-a6a3-427f-a181-3e64efc8066a
timestamp: 2026-01-25 00:08:43.289668
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}]

visible_opponents_json:
{"Marcus": [{"rank": "8", "suit": "clubs"}, {"rank": "A", "suit": "diamonds"}], "Maya": [{"rank": "Q", "suit": "spades"}, {"rank": "3", "suit": "diamonds"}], "Sage": [{"rank": "J", "suit": "hearts"}, {"rank": "5", "suit": "spades"}]}


game_id: 7d75a6c1-a6a3-427f-a181-3e64efc8066a
timestamp: 2026-01-25 00:08:43.301412
player_id: cpu_2
player_name: Maya
action: take_discard
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: took 8 from discard
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}]

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


game_id: 7d75a6c1-a6a3-427f-a181-3e64efc8066a
timestamp: 2026-01-25 00:08:43.311065
player_id: cpu_2
player_name: Maya
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": "J", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}]

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


game_id: 7d75a6c1-a6a3-427f-a181-3e64efc8066a
timestamp: 2026-01-25 00:08:43.316902
player_id: cpu_3
player_name: Sage
action: draw_deck
card_rank: J
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: 7d75a6c1-a6a3-427f-a181-3e64efc8066a
timestamp: 2026-01-25 00:08:43.322603
player_id: cpu_3
player_name: Sage
action: swap
card_rank: J
card_suit: spades
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: swapped J for 9 at pos 4
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: 7d75a6c1-a6a3-427f-a181-3e64efc8066a
timestamp: 2026-01-25 00:08:43.328469
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}]

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


game_id: 7d75a6c1-a6a3-427f-a181-3e64efc8066a
timestamp: 2026-01-25 00:08:43.334420
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: swapped 6 for 8 at pos 2
hand_json:
[{"rank": "4", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}]

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


game_id: 7d75a6c1-a6a3-427f-a181-3e64efc8066a
timestamp: 2026-01-25 00:08:43.340070
player_id: cpu_1
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": "9", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}]

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


game_id: 7d75a6c1-a6a3-427f-a181-3e64efc8066a
timestamp: 2026-01-25 00:08:43.346220
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped A for 7 at pos 2
hand_json:
[{"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}]

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


game_id: 7d75a6c1-a6a3-427f-a181-3e64efc8066a
timestamp: 2026-01-25 00:08:43.352047
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}]

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


game_id: 7d75a6c1-a6a3-427f-a181-3e64efc8066a
timestamp: 2026-01-25 00:08:43.357630
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: swapped 5 for 8 at pos 2
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}]

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


game_id: 7d75a6c1-a6a3-427f-a181-3e64efc8066a
timestamp: 2026-01-25 00:08:43.363514
player_id: cpu_3
player_name: Sage
action: take_discard
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: took 8 from discard
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: 7d75a6c1-a6a3-427f-a181-3e64efc8066a
timestamp: 2026-01-25 00:08:43.369163
player_id: cpu_3
player_name: Sage
action: swap
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: swapped 8 for J at pos 1
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: 7d75a6c1-a6a3-427f-a181-3e64efc8066a
timestamp: 2026-01-25 00:08:43.375057
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}]

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


game_id: 7d75a6c1-a6a3-427f-a181-3e64efc8066a
timestamp: 2026-01-25 00:08:43.380716
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped 2 for 6 at pos 2
hand_json:
[{"rank": "4", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}]

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


game_id: 7d75a6c1-a6a3-427f-a181-3e64efc8066a
timestamp: 2026-01-25 00:08:43.386429
player_id: cpu_1
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": "9", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": false}]

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


game_id: 7d75a6c1-a6a3-427f-a181-3e64efc8066a
timestamp: 2026-01-25 00:08:43.391792
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: swapped 6 for 10 at pos 5
hand_json:
[{"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}]

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


game_id: 7d75a6c1-a6a3-427f-a181-3e64efc8066a
timestamp: 2026-01-25 00:08:43.397624
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}]

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


game_id: 7d75a6c1-a6a3-427f-a181-3e64efc8066a
timestamp: 2026-01-25 00:08:43.409461
player_id: cpu_3
player_name: Sage
action: take_discard
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: 7d75a6c1-a6a3-427f-a181-3e64efc8066a
timestamp: 2026-01-25 00:08:43.415025
player_id: cpu_3
player_name: Sage
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: swapped 7 for J at pos 4
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: 7d75a6c1-a6a3-427f-a181-3e64efc8066a
timestamp: 2026-01-25 00:08:43.420776
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: 8
card_suit: spades
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}]

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


game_id: 7d75a6c1-a6a3-427f-a181-3e64efc8066a
timestamp: 2026-01-25 00:08:43.432962
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: 8
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}]

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


game_id: 7d75a6c1-a6a3-427f-a181-3e64efc8066a
timestamp: 2026-01-25 00:08:43.438998
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 8
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: swapped 8 for 9 at pos 0
hand_json:
[{"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}]

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


game_id: 7d75a6c1-a6a3-427f-a181-3e64efc8066a
timestamp: 2026-01-25 00:08:43.444810
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: J
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Marcus": [{"rank": "2", "suit": "hearts"}, {"rank": "A", "suit": "diamonds"}], "Kenji": [{"rank": "8", "suit": "diamonds"}, {"rank": "A", "suit": "hearts"}, {"rank": "K", "suit": "clubs"}, {"rank": "6", "suit": "spades"}], "Sage": [{"rank": "8", "suit": "hearts"}, {"rank": "7", "suit": "hearts"}, {"rank": "5", "suit": "spades"}]}


game_id: 7d75a6c1-a6a3-427f-a181-3e64efc8066a
timestamp: 2026-01-25 00:08:43.456200
player_id: cpu_3
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": "5", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: 7d75a6c1-a6a3-427f-a181-3e64efc8066a
timestamp: 2026-01-25 00:08:43.463278
player_id: cpu_3
player_name: Sage
action: swap
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: swapped A for 8 at pos 1
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: 7d75a6c1-a6a3-427f-a181-3e64efc8066a
timestamp: 2026-01-25 00:08:43.469389
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Kenji": [{"rank": "8", "suit": "diamonds"}, {"rank": "A", "suit": "hearts"}, {"rank": "K", "suit": "clubs"}, {"rank": "6", "suit": "spades"}], "Maya": [{"rank": "5", "suit": "clubs"}, {"rank": "3", "suit": "diamonds"}], "Sage": [{"rank": "A", "suit": "clubs"}, {"rank": "7", "suit": "hearts"}, {"rank": "5", "suit": "spades"}]}


game_id: 7d75a6c1-a6a3-427f-a181-3e64efc8066a
timestamp: 2026-01-25 00:08:43.475096
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "A", "suit": "diamonds"}
decision_reason: swapped 2 for A at pos 3
hand_json:
[{"rank": "4", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}]

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


game_id: 7d75a6c1-a6a3-427f-a181-3e64efc8066a
timestamp: 2026-01-25 00:08:43.481173
player_id: cpu_1
player_name: Kenji
action: take_discard
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: took A from discard
hand_json:
[{"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}]

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


game_id: 7d75a6c1-a6a3-427f-a181-3e64efc8066a
timestamp: 2026-01-25 00:08:43.486885
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: swapped A for 8 at pos 0
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}]

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


game_id: 7d75a6c1-a6a3-427f-a181-3e64efc8066a
timestamp: 2026-01-25 00:08:43.493344
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Marcus": [{"rank": "2", "suit": "hearts"}, {"rank": "2", "suit": "clubs"}], "Kenji": [{"rank": "A", "suit": "diamonds"}, {"rank": "A", "suit": "hearts"}, {"rank": "K", "suit": "clubs"}, {"rank": "6", "suit": "spades"}], "Sage": [{"rank": "A", "suit": "clubs"}, {"rank": "7", "suit": "hearts"}, {"rank": "5", "suit": "spades"}]}


game_id: 7d75a6c1-a6a3-427f-a181-3e64efc8066a
timestamp: 2026-01-25 00:08:43.499486
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped 4 for 5 at pos 2
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}]

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


game_id: 7d75a6c1-a6a3-427f-a181-3e64efc8066a
timestamp: 2026-01-25 00:08:43.505369
player_id: cpu_3
player_name: Sage
action: take_discard
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: 7d75a6c1-a6a3-427f-a181-3e64efc8066a
timestamp: 2026-01-25 00:08:43.511154
player_id: cpu_3
player_name: Sage
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "K", "suit": "diamonds"}
decision_reason: swapped 5 for K at pos 3
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: 7d75a6c1-a6a3-427f-a181-3e64efc8066a
timestamp: 2026-01-25 00:08:43.516724
player_id: cpu_0
player_name: Marcus
action: take_discard
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: took K from discard
hand_json:
[{"rank": "4", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}]

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


game_id: 7d75a6c1-a6a3-427f-a181-3e64efc8066a
timestamp: 2026-01-25 00:08:43.522697
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "4", "suit": "spades"}
decision_reason: swapped K for 4 at pos 0
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}]

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


game_id: 7d75a6c1-a6a3-427f-a181-3e64efc8066a
timestamp: 2026-01-25 00:08:43.528360
player_id: cpu_1
player_name: Kenji
action: take_discard
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}]

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


game_id: 7d75a6c1-a6a3-427f-a181-3e64efc8066a
timestamp: 2026-01-25 00:08:43.533954
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped 4 for 6 at pos 5
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 7d75a6c1-a6a3-427f-a181-3e64efc8066a
timestamp: 2026-01-25 00:08:43.539799
player_id: cpu_2
player_name: Maya
action: take_discard
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}]

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


game_id: 7d75a6c1-a6a3-427f-a181-3e64efc8066a
timestamp: 2026-01-25 00:08:43.545682
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: swapped 6 for J at pos 0
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}]

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


game_id: 7d75a6c1-a6a3-427f-a181-3e64efc8066a
timestamp: 2026-01-25 00:08:43.552041
player_id: cpu_3
player_name: Sage
action: draw_deck
card_rank: A
card_suit: spades
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: 7d75a6c1-a6a3-427f-a181-3e64efc8066a
timestamp: 2026-01-25 00:08:43.558120
player_id: cpu_3
player_name: Sage
action: swap
card_rank: A
card_suit: spades
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped A for 7 at pos 4
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: 7d75a6c1-a6a3-427f-a181-3e64efc8066a
timestamp: 2026-01-25 00:08:43.564254
player_id: cpu_0
player_name: Marcus
action: take_discard
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}]

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


game_id: 7d75a6c1-a6a3-427f-a181-3e64efc8066a
timestamp: 2026-01-25 00:08:43.570402
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped 7 for 6 at pos 1
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}]

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


game_id: 7d75a6c1-a6a3-427f-a181-3e64efc8066a
timestamp: 2026-01-25 00:08:43.576738
player_id: cpu_1
player_name: Kenji
action: take_discard
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 7d75a6c1-a6a3-427f-a181-3e64efc8066a
timestamp: 2026-01-25 00:08:43.583050
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped 6 for 7 at pos 4
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 7d75a6c1-a6a3-427f-a181-3e64efc8066a
timestamp: 2026-01-25 00:08:43.590748
player_id: cpu_2
player_name: Maya
action: take_discard
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}]

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


game_id: 7d75a6c1-a6a3-427f-a181-3e64efc8066a
timestamp: 2026-01-25 00:08:43.596845
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: swapped 7 for 4 at pos 4
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}]

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


game_id: 7d75a6c1-a6a3-427f-a181-3e64efc8066a
timestamp: 2026-01-25 00:08:43.602401
player_id: cpu_3
player_name: Sage
action: take_discard
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: 7d75a6c1-a6a3-427f-a181-3e64efc8066a
timestamp: 2026-01-25 00:08:43.608231
player_id: cpu_3
player_name: Sage
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped 4 for 5 at pos 3
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: 7d75a6c1-a6a3-427f-a181-3e64efc8066a
timestamp: 2026-01-25 00:08:43.614610
player_id: cpu_0
player_name: Marcus
action: take_discard
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}]

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


game_id: 7d75a6c1-a6a3-427f-a181-3e64efc8066a
timestamp: 2026-01-25 00:08:43.621175
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped 5 for 7 at pos 1
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}]

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


game_id: 7d75a6c1-a6a3-427f-a181-3e64efc8066a
timestamp: 2026-01-25 00:08:43.627659
player_id: cpu_1
player_name: Kenji
action: take_discard
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 7d75a6c1-a6a3-427f-a181-3e64efc8066a
timestamp: 2026-01-25 00:08:43.634035
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "3", "suit": "spades"}
decision_reason: swapped 7 for 3 at pos 1
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 7d75a6c1-a6a3-427f-a181-3e64efc8066a
timestamp: 2026-01-25 00:08:43.640330
player_id: cpu_2
player_name: Maya
action: take_discard
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}]

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


game_id: 7d75a6c1-a6a3-427f-a181-3e64efc8066a
timestamp: 2026-01-25 00:08:43.646675
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped 3 for 7 at pos 4
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}]

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


game_id: 7d75a6c1-a6a3-427f-a181-3e64efc8066a
timestamp: 2026-01-25 00:08:43.652810
player_id: cpu_3
player_name: Sage
action: take_discard
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: 7d75a6c1-a6a3-427f-a181-3e64efc8066a
timestamp: 2026-01-25 00:08:43.658540
player_id: cpu_3
player_name: Sage
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped 7 for 5 at pos 0
hand_json:
[{"rank": "7", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: 7d75a6c1-a6a3-427f-a181-3e64efc8066a
timestamp: 2026-01-25 00:08:43.664470
player_id: cpu_0
player_name: Marcus
action: take_discard
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "hearts", "face_up": false}]

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


game_id: 7d75a6c1-a6a3-427f-a181-3e64efc8066a
timestamp: 2026-01-25 00:08:43.670356
player_id: cpu_0
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 4
hand_json:
[{"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": true}]

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


game_id: 20581954-424c-4fe4-9f02-c12b8e6d0f99
timestamp: 2026-01-25 00:08:43.687190
player_id: cpu_0
player_name: Marcus
action: take_discard
card_rank: 4
card_suit: hearts
decision_reason: took 4 from discard
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": true}]

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


game_id: 20581954-424c-4fe4-9f02-c12b8e6d0f99
timestamp: 2026-01-25 00:08:43.693070
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: swapped 4 for Q at pos 1
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": true}]

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


game_id: 20581954-424c-4fe4-9f02-c12b8e6d0f99
timestamp: 2026-01-25 00:08:43.698924
player_id: cpu_1
player_name: River
action: draw_deck
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}]

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


game_id: 20581954-424c-4fe4-9f02-c12b8e6d0f99
timestamp: 2026-01-25 00:08:43.705190
player_id: cpu_1
player_name: River
action: swap
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "3", "suit": "spades"}
decision_reason: swapped 2 for 3 at pos 3
hand_json:
[{"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}]

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


game_id: 20581954-424c-4fe4-9f02-c12b8e6d0f99
timestamp: 2026-01-25 00:08:43.711415
player_id: cpu_2
player_name: Diego
action: take_discard
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}]

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


game_id: 20581954-424c-4fe4-9f02-c12b8e6d0f99
timestamp: 2026-01-25 00:08:43.717572
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped 3 for 6 at pos 4
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}]

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


game_id: 20581954-424c-4fe4-9f02-c12b8e6d0f99
timestamp: 2026-01-25 00:08:43.723569
player_id: cpu_3
player_name: Sofia
action: draw_deck
card_rank: 9
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}]

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


game_id: 20581954-424c-4fe4-9f02-c12b8e6d0f99
timestamp: 2026-01-25 00:08:43.739831
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: J
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": true}]

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


game_id: 20581954-424c-4fe4-9f02-c12b8e6d0f99
timestamp: 2026-01-25 00:08:43.751448
player_id: cpu_1
player_name: River
action: draw_deck
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}]

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


game_id: 20581954-424c-4fe4-9f02-c12b8e6d0f99
timestamp: 2026-01-25 00:08:43.757040
player_id: cpu_1
player_name: River
action: swap
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: swapped 2 for 10 at pos 2
hand_json:
[{"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}]

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


game_id: 20581954-424c-4fe4-9f02-c12b8e6d0f99
timestamp: 2026-01-25 00:08:43.762804
player_id: cpu_2
player_name: Diego
action: draw_deck
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}]

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


game_id: 20581954-424c-4fe4-9f02-c12b8e6d0f99
timestamp: 2026-01-25 00:08:43.768433
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped 3 for 5 at pos 1
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}]

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


game_id: 20581954-424c-4fe4-9f02-c12b8e6d0f99
timestamp: 2026-01-25 00:08:43.774025
player_id: cpu_3
player_name: Sofia
action: take_discard
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}]

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


game_id: 20581954-424c-4fe4-9f02-c12b8e6d0f99
timestamp: 2026-01-25 00:08:43.780104
player_id: cpu_3
player_name: Sofia
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "K", "suit": "diamonds"}
decision_reason: swapped 5 for K at pos 5
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: 20581954-424c-4fe4-9f02-c12b8e6d0f99
timestamp: 2026-01-25 00:08:43.785743
player_id: cpu_0
player_name: Marcus
action: take_discard
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: took K from discard
visible_opponents_json:
{"River": [{"rank": "K", "suit": "spades"}, {"rank": "2", "suit": "clubs"}, {"rank": "2", "suit": "spades"}], "Diego": [{"rank": "3", "suit": "hearts"}, {"rank": "5", "suit": "spades"}, {"rank": "3", "suit": "spades"}], "Sofia": [{"rank": "4", "suit": "spades"}, {"rank": "K", "suit": "clubs"}, {"rank": "5", "suit": "clubs"}]}


game_id: 20581954-424c-4fe4-9f02-c12b8e6d0f99
timestamp: 2026-01-25 00:08:43.791543
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: swapped K for 10 at pos 5
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: 20581954-424c-4fe4-9f02-c12b8e6d0f99
timestamp: 2026-01-25 00:08:43.797707
player_id: cpu_1
player_name: River
action: draw_deck
card_rank: 10
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": false}]

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


game_id: 20581954-424c-4fe4-9f02-c12b8e6d0f99
timestamp: 2026-01-25 00:08:43.809615
player_id: cpu_2
player_name: Diego
action: draw_deck
card_rank: J
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}]

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


game_id: 20581954-424c-4fe4-9f02-c12b8e6d0f99
timestamp: 2026-01-25 00:08:43.821297
player_id: cpu_3
player_name: Sofia
action: draw_deck
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: 20581954-424c-4fe4-9f02-c12b8e6d0f99
timestamp: 2026-01-25 00:08:43.826860
player_id: cpu_3
player_name: Sofia
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: swapped 5 for Q at pos 2
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: 20581954-424c-4fe4-9f02-c12b8e6d0f99
timestamp: 2026-01-25 00:08:43.832486
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: 20581954-424c-4fe4-9f02-c12b8e6d0f99
timestamp: 2026-01-25 00:08:43.838614
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped 7 for 6 at pos 0
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: 20581954-424c-4fe4-9f02-c12b8e6d0f99
timestamp: 2026-01-25 00:08:43.844356
player_id: cpu_1
player_name: River
action: take_discard
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took 6 from discard
visible_opponents_json:
{"Marcus": [{"rank": "7", "suit": "clubs"}, {"rank": "4", "suit": "hearts"}, {"rank": "K", "suit": "diamonds"}], "Diego": [{"rank": "3", "suit": "hearts"}, {"rank": "5", "suit": "spades"}, {"rank": "3", "suit": "spades"}], "Sofia": [{"rank": "4", "suit": "spades"}, {"rank": "5", "suit": "hearts"}, {"rank": "K", "suit": "clubs"}, {"rank": "5", "suit": "clubs"}]}


game_id: 20581954-424c-4fe4-9f02-c12b8e6d0f99
timestamp: 2026-01-25 00:08:43.850105
player_id: cpu_1
player_name: River
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "2", "suit": "hearts"}
decision_reason: swapped 6 for 2 at pos 5
hand_json:
[{"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}]

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


game_id: 20581954-424c-4fe4-9f02-c12b8e6d0f99
timestamp: 2026-01-25 00:08:43.856144
player_id: cpu_2
player_name: Diego
action: take_discard
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took 2 from discard
visible_opponents_json:
{"Marcus": [{"rank": "7", "suit": "clubs"}, {"rank": "4", "suit": "hearts"}, {"rank": "K", "suit": "diamonds"}], "River": [{"rank": "K", "suit": "spades"}, {"rank": "2", "suit": "clubs"}, {"rank": "2", "suit": "spades"}, {"rank": "6", "suit": "diamonds"}], "Sofia": [{"rank": "4", "suit": "spades"}, {"rank": "5", "suit": "hearts"}, {"rank": "K", "suit": "clubs"}, {"rank": "5", "suit": "clubs"}]}


game_id: 20581954-424c-4fe4-9f02-c12b8e6d0f99
timestamp: 2026-01-25 00:08:43.862294
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped 2 for 5 at pos 2
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}]

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


game_id: 20581954-424c-4fe4-9f02-c12b8e6d0f99
timestamp: 2026-01-25 00:08:43.868688
player_id: cpu_3
player_name: Sofia
action: take_discard
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: 20581954-424c-4fe4-9f02-c12b8e6d0f99
timestamp: 2026-01-25 00:08:43.876006
player_id: cpu_3
player_name: Sofia
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: swapped 5 for 4 at pos 1
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: 20581954-424c-4fe4-9f02-c12b8e6d0f99
timestamp: 2026-01-25 00:08:43.881916
player_id: cpu_0
player_name: Marcus
action: take_discard
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: 20581954-424c-4fe4-9f02-c12b8e6d0f99
timestamp: 2026-01-25 00:08:43.887935
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 4 for 6 at pos 4
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: 20581954-424c-4fe4-9f02-c12b8e6d0f99
timestamp: 2026-01-25 00:08:43.894156
player_id: cpu_1
player_name: River
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "8", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}]

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


game_id: 20581954-424c-4fe4-9f02-c12b8e6d0f99
timestamp: 2026-01-25 00:08:43.900721
player_id: cpu_1
player_name: River
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: swapped 6 for 8 at pos 0
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}]

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


game_id: 20581954-424c-4fe4-9f02-c12b8e6d0f99
timestamp: 2026-01-25 00:08:43.906941
player_id: cpu_2
player_name: Diego
action: draw_deck
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}]

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


game_id: 20581954-424c-4fe4-9f02-c12b8e6d0f99
timestamp: 2026-01-25 00:08:43.913371
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "A", "suit": "clubs"}
decision_reason: swapped 7 for A at pos 0
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}]

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


game_id: 20581954-424c-4fe4-9f02-c12b8e6d0f99
timestamp: 2026-01-25 00:08:43.919466
player_id: cpu_3
player_name: Sofia
action: take_discard
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: took A from discard
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: 20581954-424c-4fe4-9f02-c12b8e6d0f99
timestamp: 2026-01-25 00:08:43.926070
player_id: cpu_3
player_name: Sofia
action: swap
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped A for 5 at pos 1
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: 20581954-424c-4fe4-9f02-c12b8e6d0f99
timestamp: 2026-01-25 00:08:43.932446
player_id: cpu_0
player_name: Marcus
action: take_discard
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: 20581954-424c-4fe4-9f02-c12b8e6d0f99
timestamp: 2026-01-25 00:08:43.939209
player_id: cpu_0
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": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: 20581954-424c-4fe4-9f02-c12b8e6d0f99
timestamp: 2026-01-25 00:08:43.946058
player_id: cpu_1
player_name: River
action: take_discard
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}]

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


game_id: 20581954-424c-4fe4-9f02-c12b8e6d0f99
timestamp: 2026-01-25 00:08:43.954515
player_id: cpu_1
player_name: River
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: swapped 7 for 9 at pos 4
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}]

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


game_id: 20581954-424c-4fe4-9f02-c12b8e6d0f99
timestamp: 2026-01-25 00:08:43.960945
player_id: cpu_2
player_name: Diego
action: draw_deck
card_rank: 8
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}]

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


game_id: 20581954-424c-4fe4-9f02-c12b8e6d0f99
timestamp: 2026-01-25 00:08:43.966956
player_id: cpu_2
player_name: Diego
action: swap
card_rank: 8
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: swapped 8 for Q at pos 5
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": true}]

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


game_id: 20581954-424c-4fe4-9f02-c12b8e6d0f99
timestamp: 2026-01-25 00:08:43.973320
player_id: cpu_3
player_name: Sofia
action: draw_deck
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: 20581954-424c-4fe4-9f02-c12b8e6d0f99
timestamp: 2026-01-25 00:08:43.986973
player_id: cpu_0
player_name: Marcus
action: take_discard
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: 20581954-424c-4fe4-9f02-c12b8e6d0f99
timestamp: 2026-01-25 00:08:43.993086
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "3", "suit": "diamonds"}
decision_reason: swapped 7 for 3 at pos 2
hand_json:
[{"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: 9aac0eef-411d-4479-991d-f71f69e1326b
timestamp: 2026-01-25 00:08:44.010091
player_id: cpu_0
player_name: Maya
action: draw_deck
card_rank: J
card_suit: diamonds
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}]

visible_opponents_json:
{"River": [{"rank": "K", "suit": "spades"}, {"rank": "4", "suit": "hearts"}], "Sofia": [{"rank": "K", "suit": "clubs"}, {"rank": "6", "suit": "hearts"}], "Kenji": [{"rank": "10", "suit": "spades"}, {"rank": "6", "suit": "diamonds"}]}


game_id: 9aac0eef-411d-4479-991d-f71f69e1326b
timestamp: 2026-01-25 00:08:44.016204
player_id: cpu_0
player_name: Maya
action: swap
card_rank: J
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped J for 5 at pos 5
hand_json:
[{"rank": "2", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": true}]

visible_opponents_json:
{"River": [{"rank": "K", "suit": "spades"}, {"rank": "4", "suit": "hearts"}], "Sofia": [{"rank": "K", "suit": "clubs"}, {"rank": "6", "suit": "hearts"}], "Kenji": [{"rank": "10", "suit": "spades"}, {"rank": "6", "suit": "diamonds"}]}


game_id: 9aac0eef-411d-4479-991d-f71f69e1326b
timestamp: 2026-01-25 00:08:44.022158
player_id: cpu_1
player_name: River
action: take_discard
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": false}]

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


game_id: 9aac0eef-411d-4479-991d-f71f69e1326b
timestamp: 2026-01-25 00:08:44.028001
player_id: cpu_1
player_name: River
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "A", "suit": "clubs"}
decision_reason: swapped 5 for A at pos 5
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: 9aac0eef-411d-4479-991d-f71f69e1326b
timestamp: 2026-01-25 00:08:44.033967
player_id: cpu_2
player_name: Sofia
action: take_discard
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: took A from discard
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}]

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


game_id: 9aac0eef-411d-4479-991d-f71f69e1326b
timestamp: 2026-01-25 00:08:44.039758
player_id: cpu_2
player_name: Sofia
action: swap
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped A for 6 at pos 4
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}]

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


game_id: 9aac0eef-411d-4479-991d-f71f69e1326b
timestamp: 2026-01-25 00:08:44.047613
player_id: cpu_3
player_name: Kenji
action: take_discard
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}]

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


game_id: 9aac0eef-411d-4479-991d-f71f69e1326b
timestamp: 2026-01-25 00:08:44.053696
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "A", "suit": "hearts"}
decision_reason: swapped 6 for A at pos 1
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}]

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


game_id: 9aac0eef-411d-4479-991d-f71f69e1326b
timestamp: 2026-01-25 00:08:44.059678
player_id: cpu_0
player_name: Maya
action: take_discard
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: took A from discard
hand_json:
[{"rank": "2", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "diamonds", "face_up": true}]

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


game_id: 9aac0eef-411d-4479-991d-f71f69e1326b
timestamp: 2026-01-25 00:08:44.065418
player_id: cpu_0
player_name: Maya
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: swapped A for J at pos 5
hand_json:
[{"rank": "2", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 9aac0eef-411d-4479-991d-f71f69e1326b
timestamp: 2026-01-25 00:08:44.071207
player_id: cpu_1
player_name: River
action: draw_deck
card_rank: 9
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: 9aac0eef-411d-4479-991d-f71f69e1326b
timestamp: 2026-01-25 00:08:44.082863
player_id: cpu_2
player_name: Sofia
action: draw_deck
card_rank: 9
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}]

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


game_id: 9aac0eef-411d-4479-991d-f71f69e1326b
timestamp: 2026-01-25 00:08:44.094402
player_id: cpu_3
player_name: Kenji
action: draw_deck
card_rank: 10
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}]

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


game_id: 9aac0eef-411d-4479-991d-f71f69e1326b
timestamp: 2026-01-25 00:08:44.100516
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 10
card_suit: diamonds
discard_top_json: {"rank": "2", "suit": "clubs"}
decision_reason: swapped 10 for 2 at pos 5
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": true}]

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


game_id: 9aac0eef-411d-4479-991d-f71f69e1326b
timestamp: 2026-01-25 00:08:44.106364
player_id: cpu_0
player_name: Maya
action: draw_deck
card_rank: J
card_suit: hearts
discard_top_json: {"rank": "2", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 9aac0eef-411d-4479-991d-f71f69e1326b
timestamp: 2026-01-25 00:08:44.118088
player_id: cpu_1
player_name: River
action: draw_deck
card_rank: Q
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Maya": [{"rank": "A", "suit": "diamonds"}, {"rank": "5", "suit": "spades"}, {"rank": "A", "suit": "hearts"}], "Sofia": [{"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "clubs"}], "Kenji": [{"rank": "6", "suit": "hearts"}, {"rank": "10", "suit": "spades"}, {"rank": "6", "suit": "diamonds"}, {"rank": "10", "suit": "diamonds"}]}


game_id: 9aac0eef-411d-4479-991d-f71f69e1326b
timestamp: 2026-01-25 00:08:44.130521
player_id: cpu_2
player_name: Sofia
action: draw_deck
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Maya": [{"rank": "A", "suit": "diamonds"}, {"rank": "5", "suit": "spades"}, {"rank": "A", "suit": "hearts"}], "River": [{"rank": "K", "suit": "spades"}, {"rank": "4", "suit": "hearts"}, {"rank": "5", "suit": "clubs"}], "Kenji": [{"rank": "6", "suit": "hearts"}, {"rank": "10", "suit": "spades"}, {"rank": "6", "suit": "diamonds"}, {"rank": "10", "suit": "diamonds"}]}


game_id: 9aac0eef-411d-4479-991d-f71f69e1326b
timestamp: 2026-01-25 00:08:44.136762
player_id: cpu_2
player_name: Sofia
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": "7", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: 9aac0eef-411d-4479-991d-f71f69e1326b
timestamp: 2026-01-25 00:08:44.142538
player_id: cpu_3
player_name: Kenji
action: take_discard
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": true}]

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


game_id: 9aac0eef-411d-4479-991d-f71f69e1326b
timestamp: 2026-01-25 00:08:44.148183
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: swapped 3 for 10 at pos 2
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": true}]

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


game_id: 9aac0eef-411d-4479-991d-f71f69e1326b
timestamp: 2026-01-25 00:08:44.154189
player_id: cpu_0
player_name: Maya
action: draw_deck
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"River": [{"rank": "K", "suit": "spades"}, {"rank": "4", "suit": "hearts"}, {"rank": "5", "suit": "clubs"}], "Sofia": [{"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "clubs"}, {"rank": "K", "suit": "diamonds"}], "Kenji": [{"rank": "6", "suit": "hearts"}, {"rank": "3", "suit": "diamonds"}, {"rank": "6", "suit": "diamonds"}, {"rank": "10", "suit": "diamonds"}]}


game_id: 9aac0eef-411d-4479-991d-f71f69e1326b
timestamp: 2026-01-25 00:08:44.160061
player_id: cpu_0
player_name: Maya
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: swapped 5 for 8 at pos 1
hand_json:
[{"rank": "2", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 9aac0eef-411d-4479-991d-f71f69e1326b
timestamp: 2026-01-25 00:08:44.166273
player_id: cpu_1
player_name: River
action: draw_deck
card_rank: Q
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Maya": [{"rank": "5", "suit": "diamonds"}, {"rank": "A", "suit": "diamonds"}, {"rank": "5", "suit": "spades"}, {"rank": "A", "suit": "hearts"}], "Sofia": [{"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "clubs"}, {"rank": "K", "suit": "diamonds"}], "Kenji": [{"rank": "6", "suit": "hearts"}, {"rank": "3", "suit": "diamonds"}, {"rank": "6", "suit": "diamonds"}, {"rank": "10", "suit": "diamonds"}]}


game_id: 9aac0eef-411d-4479-991d-f71f69e1326b
timestamp: 2026-01-25 00:08:44.178797
player_id: cpu_2
player_name: Sofia
action: draw_deck
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: 9aac0eef-411d-4479-991d-f71f69e1326b
timestamp: 2026-01-25 00:08:44.184630
player_id: cpu_2
player_name: Sofia
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": "7", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: 9aac0eef-411d-4479-991d-f71f69e1326b
timestamp: 2026-01-25 00:08:44.190647
player_id: cpu_3
player_name: Kenji
action: take_discard
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "diamonds", "face_up": true}]

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


game_id: 9aac0eef-411d-4479-991d-f71f69e1326b
timestamp: 2026-01-25 00:08:44.196648
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: swapped 7 for 10 at pos 5
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}]

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


game_id: 9aac0eef-411d-4479-991d-f71f69e1326b
timestamp: 2026-01-25 00:08:44.202846
player_id: cpu_0
player_name: Maya
action: draw_deck
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 9aac0eef-411d-4479-991d-f71f69e1326b
timestamp: 2026-01-25 00:08:44.209068
player_id: cpu_0
player_name: Maya
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped 3 for 5 at pos 1
hand_json:
[{"rank": "2", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 9aac0eef-411d-4479-991d-f71f69e1326b
timestamp: 2026-01-25 00:08:44.215169
player_id: cpu_1
player_name: River
action: take_discard
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: took 5 from discard
visible_opponents_json:
{"Maya": [{"rank": "3", "suit": "clubs"}, {"rank": "A", "suit": "diamonds"}, {"rank": "5", "suit": "spades"}, {"rank": "A", "suit": "hearts"}], "Sofia": [{"rank": "K", "suit": "clubs"}, {"rank": "4", "suit": "clubs"}, {"rank": "A", "suit": "clubs"}, {"rank": "K", "suit": "diamonds"}], "Kenji": [{"rank": "6", "suit": "hearts"}, {"rank": "3", "suit": "diamonds"}, {"rank": "6", "suit": "diamonds"}, {"rank": "7", "suit": "clubs"}]}


game_id: 9aac0eef-411d-4479-991d-f71f69e1326b
timestamp: 2026-01-25 00:08:44.220775
player_id: cpu_1
player_name: River
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped 5 for 5 at pos 2
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: 9aac0eef-411d-4479-991d-f71f69e1326b
timestamp: 2026-01-25 00:08:44.226408
player_id: cpu_2
player_name: Sofia
action: take_discard
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: 9aac0eef-411d-4479-991d-f71f69e1326b
timestamp: 2026-01-25 00:08:44.231897
player_id: cpu_2
player_name: Sofia
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: swapped 5 for Q at pos 1
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: 9aac0eef-411d-4479-991d-f71f69e1326b
timestamp: 2026-01-25 00:08:44.237594
player_id: cpu_3
player_name: Kenji
action: draw_deck
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}]

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


game_id: 9aac0eef-411d-4479-991d-f71f69e1326b
timestamp: 2026-01-25 00:08:44.243427
player_id: cpu_3
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 5
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 9aac0eef-411d-4479-991d-f71f69e1326b
timestamp: 2026-01-25 00:08:44.249357
player_id: cpu_0
player_name: Maya
action: take_discard
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "2", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 9aac0eef-411d-4479-991d-f71f69e1326b
timestamp: 2026-01-25 00:08:44.255648
player_id: cpu_0
player_name: Maya
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "2", "suit": "spades"}
decision_reason: swapped 7 for 2 at pos 0
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 9aac0eef-411d-4479-991d-f71f69e1326b
timestamp: 2026-01-25 00:08:44.261493
player_id: cpu_1
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
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: 9aac0eef-411d-4479-991d-f71f69e1326b
timestamp: 2026-01-25 00:08:44.267221
player_id: cpu_1
player_name: River
action: swap
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped 2 for 5 at pos 2
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: 9aac0eef-411d-4479-991d-f71f69e1326b
timestamp: 2026-01-25 00:08:44.273348
player_id: cpu_2
player_name: Sofia
action: take_discard
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: 9aac0eef-411d-4479-991d-f71f69e1326b
timestamp: 2026-01-25 00:08:44.279165
player_id: cpu_2
player_name: Sofia
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped 5 for 7 at pos 0
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: 9aac0eef-411d-4479-991d-f71f69e1326b
timestamp: 2026-01-25 00:08:44.285121
player_id: cpu_3
player_name: Kenji
action: take_discard
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 9aac0eef-411d-4479-991d-f71f69e1326b
timestamp: 2026-01-25 00:08:44.290927
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "2", "suit": "diamonds"}
decision_reason: swapped 7 for 2 at pos 0
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 9aac0eef-411d-4479-991d-f71f69e1326b
timestamp: 2026-01-25 00:08:44.296761
player_id: cpu_0
player_name: Maya
action: take_discard
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took 2 from discard
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 9aac0eef-411d-4479-991d-f71f69e1326b
timestamp: 2026-01-25 00:08:44.302499
player_id: cpu_0
player_name: Maya
action: swap
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped 2 for 7 at pos 0
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}]

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


game_id: 9aac0eef-411d-4479-991d-f71f69e1326b
timestamp: 2026-01-25 00:08:44.308182
player_id: cpu_1
player_name: River
action: take_discard
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: 9aac0eef-411d-4479-991d-f71f69e1326b
timestamp: 2026-01-25 00:08:44.314454
player_id: cpu_1
player_name: River
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "spades"}
decision_reason: swapped 7 for 4 at pos 4
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: 5520d44c-4d72-49a3-8721-b415c1a8e718
timestamp: 2026-01-25 00:08:44.331966
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}]

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


game_id: 5520d44c-4d72-49a3-8721-b415c1a8e718
timestamp: 2026-01-25 00:08:44.337709
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: swapped 2 for 4 at pos 0
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}]

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


game_id: 5520d44c-4d72-49a3-8721-b415c1a8e718
timestamp: 2026-01-25 00:08:44.343634
player_id: cpu_1
player_name: Marcus
action: take_discard
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}]

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


game_id: 5520d44c-4d72-49a3-8721-b415c1a8e718
timestamp: 2026-01-25 00:08:44.349611
player_id: cpu_1
player_name: Marcus
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: swapped 4 for 8 at pos 5
hand_json:
[{"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 5520d44c-4d72-49a3-8721-b415c1a8e718
timestamp: 2026-01-25 00:08:44.355573
player_id: cpu_2
player_name: Kenji
action: take_discard
card_rank: 8
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: took 8 from discard
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}]

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


game_id: 5520d44c-4d72-49a3-8721-b415c1a8e718
timestamp: 2026-01-25 00:08:44.363845
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 8
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: swapped 8 for J at pos 2
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}]

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


game_id: 5520d44c-4d72-49a3-8721-b415c1a8e718
timestamp: 2026-01-25 00:08:44.369790
player_id: cpu_3
player_name: Diego
action: draw_deck
card_rank: K
card_suit: spades
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}]

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


game_id: 5520d44c-4d72-49a3-8721-b415c1a8e718
timestamp: 2026-01-25 00:08:44.376083
player_id: cpu_3
player_name: Diego
action: swap
card_rank: K
card_suit: spades
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: swapped K for 10 at pos 1
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}]

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


game_id: 5520d44c-4d72-49a3-8721-b415c1a8e718
timestamp: 2026-01-25 00:08:44.382074
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}]

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


game_id: 5520d44c-4d72-49a3-8721-b415c1a8e718
timestamp: 2026-01-25 00:08:44.387874
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: swapped A for Q at pos 1
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}]

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


game_id: 5520d44c-4d72-49a3-8721-b415c1a8e718
timestamp: 2026-01-25 00:08:44.393831
player_id: cpu_1
player_name: Marcus
action: draw_deck
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 5520d44c-4d72-49a3-8721-b415c1a8e718
timestamp: 2026-01-25 00:08:44.405669
player_id: cpu_2
player_name: Kenji
action: take_discard
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: took 8 from discard
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}]

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


game_id: 5520d44c-4d72-49a3-8721-b415c1a8e718
timestamp: 2026-01-25 00:08:44.411692
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "A", "suit": "hearts"}
decision_reason: swapped 8 for A at pos 5
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}]

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


game_id: 5520d44c-4d72-49a3-8721-b415c1a8e718
timestamp: 2026-01-25 00:08:44.417282
player_id: cpu_3
player_name: Diego
action: take_discard
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: took A from discard
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}]

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


game_id: 5520d44c-4d72-49a3-8721-b415c1a8e718
timestamp: 2026-01-25 00:08:44.423331
player_id: cpu_3
player_name: Diego
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped A for 7 at pos 3
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}]

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


game_id: 5520d44c-4d72-49a3-8721-b415c1a8e718
timestamp: 2026-01-25 00:08:44.429389
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}]

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


game_id: 5520d44c-4d72-49a3-8721-b415c1a8e718
timestamp: 2026-01-25 00:08:44.442701
player_id: cpu_1
player_name: Marcus
action: draw_deck
card_rank: J
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Sofia": [{"rank": "2", "suit": "spades"}, {"rank": "A", "suit": "diamonds"}, {"rank": "A", "suit": "clubs"}], "Kenji": [{"rank": "8", "suit": "diamonds"}, {"rank": "K", "suit": "hearts"}, {"rank": "8", "suit": "hearts"}], "Diego": [{"rank": "K", "suit": "spades"}, {"rank": "A", "suit": "hearts"}]}


game_id: 5520d44c-4d72-49a3-8721-b415c1a8e718
timestamp: 2026-01-25 00:08:44.454462
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: 9
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}]

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


game_id: 5520d44c-4d72-49a3-8721-b415c1a8e718
timestamp: 2026-01-25 00:08:44.471814
player_id: cpu_3
player_name: Diego
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "3", "suit": "clubs"}
decision_reason: swapped 6 for 3 at pos 5
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}]


game_id: 5520d44c-4d72-49a3-8721-b415c1a8e718
timestamp: 2026-01-25 00:08:44.477484
player_id: cpu_0
player_name: Sofia
action: take_discard
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took 3 from discard
visible_opponents_json:
{"Marcus": [{"rank": "A", "suit": "spades"}, {"rank": "4", "suit": "clubs"}], "Kenji": [{"rank": "8", "suit": "diamonds"}, {"rank": "K", "suit": "hearts"}, {"rank": "8", "suit": "hearts"}], "Diego": [{"rank": "K", "suit": "spades"}, {"rank": "A", "suit": "hearts"}, {"rank": "6", "suit": "hearts"}]}


game_id: 5520d44c-4d72-49a3-8721-b415c1a8e718
timestamp: 2026-01-25 00:08:44.483475
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped 3 for 5 at pos 5
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: 5520d44c-4d72-49a3-8721-b415c1a8e718
timestamp: 2026-01-25 00:08:44.489627
player_id: cpu_1
player_name: Marcus
action: take_discard
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took 5 from discard
visible_opponents_json:
{"Sofia": [{"rank": "2", "suit": "spades"}, {"rank": "A", "suit": "diamonds"}, {"rank": "A", "suit": "clubs"}, {"rank": "3", "suit": "clubs"}], "Kenji": [{"rank": "8", "suit": "diamonds"}, {"rank": "K", "suit": "hearts"}, {"rank": "8", "suit": "hearts"}], "Diego": [{"rank": "K", "suit": "spades"}, {"rank": "A", "suit": "hearts"}, {"rank": "6", "suit": "hearts"}]}


game_id: 5520d44c-4d72-49a3-8721-b415c1a8e718
timestamp: 2026-01-25 00:08:44.495139
player_id: cpu_1
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 0
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 5520d44c-4d72-49a3-8721-b415c1a8e718
timestamp: 2026-01-25 00:08:44.500847
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Sofia": [{"rank": "2", "suit": "spades"}, {"rank": "A", "suit": "diamonds"}, {"rank": "A", "suit": "clubs"}, {"rank": "3", "suit": "clubs"}], "Marcus": [{"rank": "5", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}, {"rank": "4", "suit": "clubs"}], "Diego": [{"rank": "K", "suit": "spades"}, {"rank": "A", "suit": "hearts"}, {"rank": "6", "suit": "hearts"}]}


game_id: 5520d44c-4d72-49a3-8721-b415c1a8e718
timestamp: 2026-01-25 00:08:44.506594
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: swapped 2 for 8 at pos 2
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}]

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


game_id: 5520d44c-4d72-49a3-8721-b415c1a8e718
timestamp: 2026-01-25 00:08:44.511865
player_id: cpu_3
player_name: Diego
action: draw_deck
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}]

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


game_id: 5520d44c-4d72-49a3-8721-b415c1a8e718
timestamp: 2026-01-25 00:08:44.517318
player_id: cpu_3
player_name: Diego
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped 3 for 6 at pos 5
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: 5520d44c-4d72-49a3-8721-b415c1a8e718
timestamp: 2026-01-25 00:08:44.522798
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: 5520d44c-4d72-49a3-8721-b415c1a8e718
timestamp: 2026-01-25 00:08:44.528256
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "3", "suit": "clubs"}
decision_reason: swapped 2 for 3 at pos 5
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: 5520d44c-4d72-49a3-8721-b415c1a8e718
timestamp: 2026-01-25 00:08:44.534169
player_id: cpu_1
player_name: Marcus
action: take_discard
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 5520d44c-4d72-49a3-8721-b415c1a8e718
timestamp: 2026-01-25 00:08:44.539985
player_id: cpu_1
player_name: Marcus
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": "A", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 5520d44c-4d72-49a3-8721-b415c1a8e718
timestamp: 2026-01-25 00:08:44.545957
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}]

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


game_id: 5520d44c-4d72-49a3-8721-b415c1a8e718
timestamp: 2026-01-25 00:08:44.551783
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: swapped 5 for 8 at pos 5
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: 5520d44c-4d72-49a3-8721-b415c1a8e718
timestamp: 2026-01-25 00:08:44.557227
player_id: cpu_3
player_name: Diego
action: draw_deck
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: 5520d44c-4d72-49a3-8721-b415c1a8e718
timestamp: 2026-01-25 00:08:44.563166
player_id: cpu_3
player_name: Diego
action: swap
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped 4 for 7 at pos 0
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: 5520d44c-4d72-49a3-8721-b415c1a8e718
timestamp: 2026-01-25 00:08:44.568875
player_id: cpu_0
player_name: Sofia
action: take_discard
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: 5520d44c-4d72-49a3-8721-b415c1a8e718
timestamp: 2026-01-25 00:08:44.574805
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: swapped 7 for 10 at pos 2
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: 5520d44c-4d72-49a3-8721-b415c1a8e718
timestamp: 2026-01-25 00:08:44.580462
player_id: cpu_1
player_name: Marcus
action: draw_deck
card_rank: K
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": "A", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 5520d44c-4d72-49a3-8721-b415c1a8e718
timestamp: 2026-01-25 00:08:44.586123
player_id: cpu_1
player_name: Marcus
action: swap
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: swapped K for 4 at pos 5
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: 5520d44c-4d72-49a3-8721-b415c1a8e718
timestamp: 2026-01-25 00:08:44.592121
player_id: cpu_2
player_name: Kenji
action: take_discard
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}]

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


game_id: 5520d44c-4d72-49a3-8721-b415c1a8e718
timestamp: 2026-01-25 00:08:44.598100
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped 4 for 5 at pos 5
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 5520d44c-4d72-49a3-8721-b415c1a8e718
timestamp: 2026-01-25 00:08:44.604017
player_id: cpu_3
player_name: Diego
action: draw_deck
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: 5520d44c-4d72-49a3-8721-b415c1a8e718
timestamp: 2026-01-25 00:08:44.609884
player_id: cpu_3
player_name: Diego
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: swapped 5 for 10 at pos 4
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: 5520d44c-4d72-49a3-8721-b415c1a8e718
timestamp: 2026-01-25 00:08:44.615558
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: J
card_suit: spades
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: 5520d44c-4d72-49a3-8721-b415c1a8e718
timestamp: 2026-01-25 00:08:44.629135
player_id: cpu_1
player_name: Marcus
action: draw_deck
card_rank: Q
card_suit: spades
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: 5520d44c-4d72-49a3-8721-b415c1a8e718
timestamp: 2026-01-25 00:08:44.641123
player_id: cpu_2
player_name: Kenji
action: draw_deck
card_rank: 9
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 5520d44c-4d72-49a3-8721-b415c1a8e718
timestamp: 2026-01-25 00:08:44.647194
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 9
card_suit: clubs
discard_top_json: {"rank": "3", "suit": "spades"}
decision_reason: swapped 9 for 3 at pos 1
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 5520d44c-4d72-49a3-8721-b415c1a8e718
timestamp: 2026-01-25 00:08:44.653033
player_id: cpu_3
player_name: Diego
action: take_discard
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: 5520d44c-4d72-49a3-8721-b415c1a8e718
timestamp: 2026-01-25 00:08:44.658401
player_id: cpu_3
player_name: Diego
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "3", "suit": "hearts"}
decision_reason: swapped 3 for 3 at pos 2
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: 5520d44c-4d72-49a3-8721-b415c1a8e718
timestamp: 2026-01-25 00:08:44.665579
player_id: cpu_0
player_name: Sofia
action: take_discard
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took 3 from discard
visible_opponents_json:
{"Marcus": [{"rank": "3", "suit": "clubs"}, {"rank": "A", "suit": "spades"}, {"rank": "K", "suit": "clubs"}], "Kenji": [{"rank": "9", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}, {"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "clubs"}], "Diego": [{"rank": "4", "suit": "spades"}, {"rank": "K", "suit": "spades"}, {"rank": "3", "suit": "spades"}, {"rank": "A", "suit": "hearts"}, {"rank": "5", "suit": "clubs"}, {"rank": "3", "suit": "diamonds"}]}


game_id: 5520d44c-4d72-49a3-8721-b415c1a8e718
timestamp: 2026-01-25 00:08:44.671141
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped 3 for 7 at pos 2
hand_json:
[{"rank": "2", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: 5520d44c-4d72-49a3-8721-b415c1a8e718
timestamp: 2026-01-25 00:08:44.676943
player_id: cpu_1
player_name: Marcus
action: take_discard
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took 7 from discard
visible_opponents_json:
{"Sofia": [{"rank": "2", "suit": "spades"}, {"rank": "A", "suit": "diamonds"}, {"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}, {"rank": "2", "suit": "hearts"}], "Kenji": [{"rank": "9", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}, {"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "clubs"}], "Diego": [{"rank": "4", "suit": "spades"}, {"rank": "K", "suit": "spades"}, {"rank": "3", "suit": "spades"}, {"rank": "A", "suit": "hearts"}, {"rank": "5", "suit": "clubs"}, {"rank": "3", "suit": "diamonds"}]}


game_id: 5520d44c-4d72-49a3-8721-b415c1a8e718
timestamp: 2026-01-25 00:08:44.683311
player_id: cpu_1
player_name: Marcus
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: swapped 7 for 9 at pos 2
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}]

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


game_id: 5520d44c-4d72-49a3-8721-b415c1a8e718
timestamp: 2026-01-25 00:08:44.689197
player_id: cpu_2
player_name: Kenji
action: take_discard
card_rank: 9
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took 9 from discard
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: 5520d44c-4d72-49a3-8721-b415c1a8e718
timestamp: 2026-01-25 00:08:44.695235
player_id: cpu_2
player_name: Kenji
action: swap
card_rank: 9
card_suit: spades
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: swapped 9 for 8 at pos 4
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: ea15e28a-feda-4651-a386-8476022160e5
timestamp: 2026-01-25 00:08:44.713286
player_id: cpu_0
player_name: Maya
action: draw_deck
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}]

visible_opponents_json:
{"River": [{"rank": "J", "suit": "diamonds"}, {"rank": "J", "suit": "hearts"}], "Sofia": [{"rank": "2", "suit": "spades"}, {"rank": "8", "suit": "spades"}], "Marcus": [{"rank": "2", "suit": "hearts"}, {"rank": "A", "suit": "diamonds"}]}


game_id: ea15e28a-feda-4651-a386-8476022160e5
timestamp: 2026-01-25 00:08:44.724366
player_id: cpu_1
player_name: River
action: take_discard
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: took 8 from discard
hand_json:
[{"rank": "J", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": true}]

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


game_id: ea15e28a-feda-4651-a386-8476022160e5
timestamp: 2026-01-25 00:08:44.730122
player_id: cpu_1
player_name: River
action: swap
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: swapped 8 for J at pos 0
hand_json:
[{"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": true}]

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


game_id: ea15e28a-feda-4651-a386-8476022160e5
timestamp: 2026-01-25 00:08:44.736026
player_id: cpu_2
player_name: Sofia
action: draw_deck
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": true}]

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


game_id: ea15e28a-feda-4651-a386-8476022160e5
timestamp: 2026-01-25 00:08:44.743665
player_id: cpu_2
player_name: Sofia
action: swap
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: swapped K for 8 at pos 5
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: ea15e28a-feda-4651-a386-8476022160e5
timestamp: 2026-01-25 00:08:44.749498
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}]

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


game_id: ea15e28a-feda-4651-a386-8476022160e5
timestamp: 2026-01-25 00:08:44.761961
player_id: cpu_0
player_name: Maya
action: draw_deck
card_rank: J
card_suit: spades
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}]

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


game_id: ea15e28a-feda-4651-a386-8476022160e5
timestamp: 2026-01-25 00:08:44.774188
player_id: cpu_1
player_name: River
action: take_discard
card_rank: J
card_suit: spades
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: took J from discard
hand_json:
[{"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": true}]

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


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

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


game_id: ea15e28a-feda-4651-a386-8476022160e5
timestamp: 2026-01-25 00:08:44.786188
player_id: cpu_2
player_name: Sofia
action: take_discard
card_rank: A
card_suit: spades
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: took A from discard
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: ea15e28a-feda-4651-a386-8476022160e5
timestamp: 2026-01-25 00:08:44.791823
player_id: cpu_2
player_name: Sofia
action: swap
card_rank: A
card_suit: spades
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: swapped A for 8 at pos 2
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: ea15e28a-feda-4651-a386-8476022160e5
timestamp: 2026-01-25 00:08:44.797108
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 9
card_suit: spades
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}]

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


game_id: ea15e28a-feda-4651-a386-8476022160e5
timestamp: 2026-01-25 00:08:44.808129
player_id: cpu_0
player_name: Maya
action: draw_deck
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"River": [{"rank": "8", "suit": "hearts"}, {"rank": "J", "suit": "spades"}, {"rank": "J", "suit": "hearts"}], "Sofia": [{"rank": "2", "suit": "spades"}, {"rank": "A", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}], "Marcus": [{"rank": "2", "suit": "hearts"}, {"rank": "A", "suit": "diamonds"}]}


game_id: ea15e28a-feda-4651-a386-8476022160e5
timestamp: 2026-01-25 00:08:44.814046
player_id: cpu_0
player_name: Maya
action: swap
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: swapped 2 for 4 at pos 3
hand_json:
[{"rank": "4", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}]

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


game_id: ea15e28a-feda-4651-a386-8476022160e5
timestamp: 2026-01-25 00:08:44.819879
player_id: cpu_1
player_name: River
action: take_discard
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": true}]

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


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

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


game_id: ea15e28a-feda-4651-a386-8476022160e5
timestamp: 2026-01-25 00:08:44.832671
player_id: cpu_2
player_name: Sofia
action: draw_deck
card_rank: 10
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: ea15e28a-feda-4651-a386-8476022160e5
timestamp: 2026-01-25 00:08:44.844875
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Maya": [{"rank": "A", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}], "River": [{"rank": "8", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}, {"rank": "J", "suit": "hearts"}], "Sofia": [{"rank": "2", "suit": "spades"}, {"rank": "A", "suit": "spades"}, {"rank": "K", "suit": "diamonds"}]}


game_id: ea15e28a-feda-4651-a386-8476022160e5
timestamp: 2026-01-25 00:08:44.850440
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: swapped 3 for Q at pos 1
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}]

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


game_id: ea15e28a-feda-4651-a386-8476022160e5
timestamp: 2026-01-25 00:08:44.856491
player_id: cpu_0
player_name: Maya
action: draw_deck
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}]

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


game_id: ea15e28a-feda-4651-a386-8476022160e5
timestamp: 2026-01-25 00:08:44.862464
player_id: cpu_0
player_name: Maya
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped 3 for 5 at pos 2
hand_json:
[{"rank": "4", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}]

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


game_id: ea15e28a-feda-4651-a386-8476022160e5
timestamp: 2026-01-25 00:08:44.868107
player_id: cpu_1
player_name: River
action: take_discard
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": true}]

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


game_id: ea15e28a-feda-4651-a386-8476022160e5
timestamp: 2026-01-25 00:08:44.873926
player_id: cpu_1
player_name: River
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: swapped 5 for J at pos 5
hand_json:
[{"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}]

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


game_id: ea15e28a-feda-4651-a386-8476022160e5
timestamp: 2026-01-25 00:08:44.879719
player_id: cpu_2
player_name: Sofia
action: draw_deck
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Maya": [{"rank": "A", "suit": "clubs"}, {"rank": "3", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}], "River": [{"rank": "8", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}, {"rank": "5", "suit": "diamonds"}], "Marcus": [{"rank": "2", "suit": "hearts"}, {"rank": "3", "suit": "spades"}, {"rank": "A", "suit": "diamonds"}]}


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

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


game_id: ea15e28a-feda-4651-a386-8476022160e5
timestamp: 2026-01-25 00:08:44.891611
player_id: cpu_3
player_name: Marcus
action: take_discard
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: took K from discard
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}]

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


game_id: ea15e28a-feda-4651-a386-8476022160e5
timestamp: 2026-01-25 00:08:44.897861
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "3", "suit": "spades"}
decision_reason: swapped K for 3 at pos 1
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}]

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


game_id: ea15e28a-feda-4651-a386-8476022160e5
timestamp: 2026-01-25 00:08:44.903971
player_id: cpu_0
player_name: Maya
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": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}]

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


game_id: ea15e28a-feda-4651-a386-8476022160e5
timestamp: 2026-01-25 00:08:44.910047
player_id: cpu_0
player_name: Maya
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: swapped 3 for Q at pos 5
hand_json:
[{"rank": "4", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: ea15e28a-feda-4651-a386-8476022160e5
timestamp: 2026-01-25 00:08:44.915936
player_id: cpu_1
player_name: River
action: draw_deck
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}]

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


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

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


game_id: ea15e28a-feda-4651-a386-8476022160e5
timestamp: 2026-01-25 00:08:44.927298
player_id: cpu_2
player_name: Sofia
action: draw_deck
card_rank: Q
card_suit: spades
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: ea15e28a-feda-4651-a386-8476022160e5
timestamp: 2026-01-25 00:08:44.938920
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}]

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


game_id: ea15e28a-feda-4651-a386-8476022160e5
timestamp: 2026-01-25 00:08:44.944678
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: swapped 6 for 8 at pos 2
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}]

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


game_id: ea15e28a-feda-4651-a386-8476022160e5
timestamp: 2026-01-25 00:08:44.950338
player_id: cpu_0
player_name: Maya
action: draw_deck
card_rank: K
card_suit: spades
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}]

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


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

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


game_id: ea15e28a-feda-4651-a386-8476022160e5
timestamp: 2026-01-25 00:08:44.962479
player_id: cpu_1
player_name: River
action: take_discard
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}]

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


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

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


game_id: ea15e28a-feda-4651-a386-8476022160e5
timestamp: 2026-01-25 00:08:44.978127
player_id: cpu_2
player_name: Sofia
action: take_discard
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: took 5 from discard
visible_opponents_json:
{"Maya": [{"rank": "A", "suit": "clubs"}, {"rank": "K", "suit": "spades"}, {"rank": "2", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}], "River": [{"rank": "K", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}, {"rank": "3", "suit": "diamonds"}], "Marcus": [{"rank": "2", "suit": "hearts"}, {"rank": "K", "suit": "clubs"}, {"rank": "6", "suit": "spades"}, {"rank": "A", "suit": "diamonds"}]}


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

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


game_id: ea15e28a-feda-4651-a386-8476022160e5
timestamp: 2026-01-25 00:08:44.990607
player_id: cpu_3
player_name: Marcus
action: take_discard
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: took A from discard
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}]

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


game_id: ea15e28a-feda-4651-a386-8476022160e5
timestamp: 2026-01-25 00:08:44.996432
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped A for 6 at pos 2
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}]

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


game_id: ea15e28a-feda-4651-a386-8476022160e5
timestamp: 2026-01-25 00:08:45.002266
player_id: cpu_0
player_name: Maya
action: take_discard
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "4", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}]

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


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

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


game_id: ea15e28a-feda-4651-a386-8476022160e5
timestamp: 2026-01-25 00:08:45.013844
player_id: cpu_1
player_name: River
action: take_discard
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


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

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


game_id: ea15e28a-feda-4651-a386-8476022160e5
timestamp: 2026-01-25 00:08:45.025658
player_id: cpu_2
player_name: Sofia
action: draw_deck
card_rank: 10
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}]

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


game_id: ea15e28a-feda-4651-a386-8476022160e5
timestamp: 2026-01-25 00:08:45.038141
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}]

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


game_id: ea15e28a-feda-4651-a386-8476022160e5
timestamp: 2026-01-25 00:08:45.044682
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: swapped 5 for 9 at pos 3
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}]

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


game_id: ea15e28a-feda-4651-a386-8476022160e5
timestamp: 2026-01-25 00:08:45.051018
player_id: cpu_0
player_name: Maya
action: draw_deck
card_rank: 9
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: ea15e28a-feda-4651-a386-8476022160e5
timestamp: 2026-01-25 00:08:45.062289
player_id: cpu_1
player_name: River
action: draw_deck
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


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

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


game_id: ea15e28a-feda-4651-a386-8476022160e5
timestamp: 2026-01-25 00:08:45.073988
player_id: cpu_2
player_name: Sofia
action: take_discard
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: took 4 from discard
visible_opponents_json:
{"Maya": [{"rank": "6", "suit": "spades"}, {"rank": "A", "suit": "clubs"}, {"rank": "K", "suit": "spades"}, {"rank": "2", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}], "River": [{"rank": "K", "suit": "hearts"}, {"rank": "2", "suit": "clubs"}, {"rank": "4", "suit": "spades"}, {"rank": "3", "suit": "diamonds"}], "Marcus": [{"rank": "2", "suit": "hearts"}, {"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "5", "suit": "clubs"}, {"rank": "A", "suit": "diamonds"}]}


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

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


game_id: ea15e28a-feda-4651-a386-8476022160e5
timestamp: 2026-01-25 00:08:45.086217
player_id: cpu_3
player_name: Marcus
action: take_discard
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}]

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


game_id: ea15e28a-feda-4651-a386-8476022160e5
timestamp: 2026-01-25 00:08:45.092250
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: swapped 6 for 9 at pos 5
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}]

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


game_id: ea15e28a-feda-4651-a386-8476022160e5
timestamp: 2026-01-25 00:08:45.098205
player_id: cpu_0
player_name: Maya
action: draw_deck
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"River": [{"rank": "K", "suit": "hearts"}, {"rank": "2", "suit": "clubs"}, {"rank": "4", "suit": "spades"}, {"rank": "3", "suit": "diamonds"}], "Sofia": [{"rank": "3", "suit": "clubs"}, {"rank": "2", "suit": "spades"}, {"rank": "A", "suit": "spades"}, {"rank": "4", "suit": "hearts"}, {"rank": "5", "suit": "diamonds"}, {"rank": "K", "suit": "diamonds"}], "Marcus": [{"rank": "2", "suit": "hearts"}, {"rank": "K", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "5", "suit": "clubs"}, {"rank": "A", "suit": "diamonds"}, {"rank": "6", "suit": "diamonds"}]}


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

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


game_id: ea15e28a-feda-4651-a386-8476022160e5
timestamp: 2026-01-25 00:08:45.110970
player_id: cpu_1
player_name: River
action: take_discard
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


