# moves

game_id: 9d9165a4-4a06-42fa-b663-be4ab1a23698
timestamp: 2026-01-25 00:10:20.036388
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: swapped 4 for J at pos 4
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: 9d9165a4-4a06-42fa-b663-be4ab1a23698
timestamp: 2026-01-25 00:10:20.042637
player_id: cpu_3
player_name: Kenji
action: draw_deck
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 9d9165a4-4a06-42fa-b663-be4ab1a23698
timestamp: 2026-01-25 00:10:20.048867
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped 3 for 7 at pos 3
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 9d9165a4-4a06-42fa-b663-be4ab1a23698
timestamp: 2026-01-25 00:10:20.055090
player_id: cpu_0
player_name: Maya
action: take_discard
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: took 7 from discard
visible_opponents_json:
{"Priya": [{"rank": "A", "suit": "diamonds"}, {"rank": "5", "suit": "diamonds"}, {"rank": "6", "suit": "clubs"}, {"rank": "A", "suit": "clubs"}, {"rank": "5", "suit": "spades"}], "Sage": [{"rank": "2", "suit": "spades"}, {"rank": "2", "suit": "hearts"}, {"rank": "6", "suit": "spades"}, {"rank": "4", "suit": "hearts"}, {"rank": "K", "suit": "spades"}], "Kenji": [{"rank": "2", "suit": "diamonds"}, {"rank": "K", "suit": "hearts"}, {"rank": "3", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "clubs"}]}


game_id: 9d9165a4-4a06-42fa-b663-be4ab1a23698
timestamp: 2026-01-25 00:10:20.061485
player_id: cpu_0
player_name: Maya
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: swapped 7 for 4 at pos 0
hand_json:
[{"rank": "7", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 9d9165a4-4a06-42fa-b663-be4ab1a23698
timestamp: 2026-01-25 00:10:20.068509
player_id: cpu_1
player_name: Priya
action: take_discard
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}]

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


game_id: 9d9165a4-4a06-42fa-b663-be4ab1a23698
timestamp: 2026-01-25 00:10:20.074803
player_id: cpu_1
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 2
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}]

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


game_id: 9d9165a4-4a06-42fa-b663-be4ab1a23698
timestamp: 2026-01-25 00:10:20.081169
player_id: cpu_2
player_name: Sage
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: 9d9165a4-4a06-42fa-b663-be4ab1a23698
timestamp: 2026-01-25 00:10:20.086821
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped 6 for 7 at pos 0
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: 9d9165a4-4a06-42fa-b663-be4ab1a23698
timestamp: 2026-01-25 00:10:20.092731
player_id: cpu_3
player_name: Kenji
action: take_discard
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 9d9165a4-4a06-42fa-b663-be4ab1a23698
timestamp: 2026-01-25 00:10:20.098537
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "A", "suit": "spades"}
decision_reason: swapped 7 for A at pos 1
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}]

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


game_id: 4c9b0ca9-416d-4ba3-8165-9498532eb051
timestamp: 2026-01-25 00:10:20.115742
player_id: cpu_0
player_name: Marcus
action: take_discard
card_rank: 8
card_suit: diamonds
decision_reason: took 8 from discard
hand_json:
[{"rank": "J", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: 4c9b0ca9-416d-4ba3-8165-9498532eb051
timestamp: 2026-01-25 00:10:20.121995
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: 8
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: swapped 8 for J at pos 0
hand_json:
[{"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: 4c9b0ca9-416d-4ba3-8165-9498532eb051
timestamp: 2026-01-25 00:10:20.128386
player_id: cpu_1
player_name: Diego
action: take_discard
card_rank: J
card_suit: clubs
decision_reason: took J from discard
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": false}]

visible_opponents_json:
{"Marcus": [{"rank": "8", "suit": "diamonds"}, {"rank": "A", "suit": "clubs"}], "Maya": [{"rank": "J", "suit": "hearts"}, {"rank": "4", "suit": "clubs"}], "Sofia": [{"rank": "7", "suit": "hearts"}, {"rank": "10", "suit": "diamonds"}]}


game_id: 4c9b0ca9-416d-4ba3-8165-9498532eb051
timestamp: 2026-01-25 00:10:20.134628
player_id: cpu_1
player_name: Diego
action: swap
card_rank: J
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped J for 6 at pos 5
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": true}]

visible_opponents_json:
{"Marcus": [{"rank": "8", "suit": "diamonds"}, {"rank": "A", "suit": "clubs"}], "Maya": [{"rank": "J", "suit": "hearts"}, {"rank": "4", "suit": "clubs"}], "Sofia": [{"rank": "7", "suit": "hearts"}, {"rank": "10", "suit": "diamonds"}]}


game_id: 4c9b0ca9-416d-4ba3-8165-9498532eb051
timestamp: 2026-01-25 00:10:20.140280
player_id: cpu_2
player_name: Maya
action: take_discard
card_rank: 6
card_suit: clubs
decision_reason: took 6 from discard
hand_json:
[{"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}]

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


game_id: 4c9b0ca9-416d-4ba3-8165-9498532eb051
timestamp: 2026-01-25 00:10:20.146167
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: swapped 6 for J at pos 2
hand_json:
[{"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}]

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


game_id: 4c9b0ca9-416d-4ba3-8165-9498532eb051
timestamp: 2026-01-25 00:10:20.152331
player_id: cpu_3
player_name: Sofia
action: draw_deck
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}]

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


game_id: 4c9b0ca9-416d-4ba3-8165-9498532eb051
timestamp: 2026-01-25 00:10:20.158622
player_id: cpu_3
player_name: Sofia
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: swapped 4 for 10 at pos 4
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}]

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


game_id: 4c9b0ca9-416d-4ba3-8165-9498532eb051
timestamp: 2026-01-25 00:10:20.164855
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: 4c9b0ca9-416d-4ba3-8165-9498532eb051
timestamp: 2026-01-25 00:10:20.171296
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: swapped 7 for 8 at pos 0
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: 4c9b0ca9-416d-4ba3-8165-9498532eb051
timestamp: 2026-01-25 00:10:20.177409
player_id: cpu_1
player_name: Diego
action: take_discard
card_rank: 8
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: took 8 from discard
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": true}]

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


game_id: 4c9b0ca9-416d-4ba3-8165-9498532eb051
timestamp: 2026-01-25 00:10:20.187034
player_id: cpu_1
player_name: Diego
action: swap
card_rank: 8
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: swapped 8 for J at pos 2
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": true}]

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


game_id: 4c9b0ca9-416d-4ba3-8165-9498532eb051
timestamp: 2026-01-25 00:10:20.193408
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}]

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


game_id: 4c9b0ca9-416d-4ba3-8165-9498532eb051
timestamp: 2026-01-25 00:10:20.199588
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: swapped 6 for 9 at pos 5
hand_json:
[{"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}]

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


game_id: 4c9b0ca9-416d-4ba3-8165-9498532eb051
timestamp: 2026-01-25 00:10:20.205927
player_id: cpu_3
player_name: Sofia
action: draw_deck
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}]

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


game_id: 4c9b0ca9-416d-4ba3-8165-9498532eb051
timestamp: 2026-01-25 00:10:20.211925
player_id: cpu_3
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": "K", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}]

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


game_id: 4c9b0ca9-416d-4ba3-8165-9498532eb051
timestamp: 2026-01-25 00:10:20.219350
player_id: cpu_0
player_name: Marcus
action: take_discard
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: 4c9b0ca9-416d-4ba3-8165-9498532eb051
timestamp: 2026-01-25 00:10:20.225213
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped 7 for 5 at pos 3
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: 4c9b0ca9-416d-4ba3-8165-9498532eb051
timestamp: 2026-01-25 00:10:20.230890
player_id: cpu_1
player_name: Diego
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": "A", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": true}]

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


game_id: 4c9b0ca9-416d-4ba3-8165-9498532eb051
timestamp: 2026-01-25 00:10:20.236625
player_id: cpu_1
player_name: Diego
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: swapped 5 for J at pos 5
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: 4c9b0ca9-416d-4ba3-8165-9498532eb051
timestamp: 2026-01-25 00:10:20.242551
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: 8
card_suit: spades
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}]

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


game_id: 4c9b0ca9-416d-4ba3-8165-9498532eb051
timestamp: 2026-01-25 00:10:20.257877
player_id: cpu_3
player_name: Sofia
action: draw_deck
card_rank: 9
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}]

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


game_id: 4c9b0ca9-416d-4ba3-8165-9498532eb051
timestamp: 2026-01-25 00:10:20.269722
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: 9
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: 4c9b0ca9-416d-4ba3-8165-9498532eb051
timestamp: 2026-01-25 00:10:20.287653
player_id: cpu_1
player_name: Diego
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: swapped 6 for 8 at pos 2
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}]


game_id: 4c9b0ca9-416d-4ba3-8165-9498532eb051
timestamp: 2026-01-25 00:10:20.293930
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Marcus": [{"rank": "7", "suit": "diamonds"}, {"rank": "7", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}], "Diego": [{"rank": "6", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}, {"rank": "5", "suit": "hearts"}], "Sofia": [{"rank": "3", "suit": "hearts"}, {"rank": "4", "suit": "diamonds"}]}


game_id: 4c9b0ca9-416d-4ba3-8165-9498532eb051
timestamp: 2026-01-25 00:10:20.306321
player_id: cpu_3
player_name: Sofia
action: draw_deck
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Marcus": [{"rank": "7", "suit": "diamonds"}, {"rank": "7", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}], "Diego": [{"rank": "6", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}, {"rank": "5", "suit": "hearts"}], "Maya": [{"rank": "6", "suit": "clubs"}, {"rank": "4", "suit": "clubs"}, {"rank": "6", "suit": "hearts"}]}


game_id: 4c9b0ca9-416d-4ba3-8165-9498532eb051
timestamp: 2026-01-25 00:10:20.312440
player_id: cpu_3
player_name: Sofia
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: swapped A for 4 at pos 4
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}]

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


game_id: 4c9b0ca9-416d-4ba3-8165-9498532eb051
timestamp: 2026-01-25 00:10:20.318399
player_id: cpu_0
player_name: Marcus
action: take_discard
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: took 4 from discard
visible_opponents_json:
{"Diego": [{"rank": "6", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}, {"rank": "5", "suit": "hearts"}], "Maya": [{"rank": "6", "suit": "clubs"}, {"rank": "4", "suit": "clubs"}, {"rank": "6", "suit": "hearts"}], "Sofia": [{"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "hearts"}]}


game_id: 4c9b0ca9-416d-4ba3-8165-9498532eb051
timestamp: 2026-01-25 00:10:20.324125
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 4 for 7 at pos 0
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: 4c9b0ca9-416d-4ba3-8165-9498532eb051
timestamp: 2026-01-25 00:10:20.333857
player_id: cpu_1
player_name: Diego
action: draw_deck
card_rank: 10
card_suit: spades
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: 4c9b0ca9-416d-4ba3-8165-9498532eb051
timestamp: 2026-01-25 00:10:20.345451
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Marcus": [{"rank": "4", "suit": "diamonds"}, {"rank": "7", "suit": "hearts"}, {"rank": "A", "suit": "clubs"}], "Diego": [{"rank": "6", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}, {"rank": "5", "suit": "hearts"}], "Sofia": [{"rank": "3", "suit": "hearts"}, {"rank": "A", "suit": "hearts"}]}


game_id: 4c9b0ca9-416d-4ba3-8165-9498532eb051
timestamp: 2026-01-25 00:10:20.351712
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 5 for 6 at pos 2
hand_json:
[{"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}]

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


game_id: 4c9b0ca9-416d-4ba3-8165-9498532eb051
timestamp: 2026-01-25 00:10:20.357721
player_id: cpu_3
player_name: Sofia
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}]

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


game_id: 4c9b0ca9-416d-4ba3-8165-9498532eb051
timestamp: 2026-01-25 00:10:20.363923
player_id: cpu_3
player_name: Sofia
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: swapped 6 for Q at pos 3
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}]

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


game_id: 4c9b0ca9-416d-4ba3-8165-9498532eb051
timestamp: 2026-01-25 00:10:20.369966
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: 4c9b0ca9-416d-4ba3-8165-9498532eb051
timestamp: 2026-01-25 00:10:20.376420
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped 4 for 7 at pos 3
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: 4c9b0ca9-416d-4ba3-8165-9498532eb051
timestamp: 2026-01-25 00:10:20.382715
player_id: cpu_1
player_name: Diego
action: draw_deck
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Marcus": [{"rank": "4", "suit": "diamonds"}, {"rank": "4", "suit": "spades"}, {"rank": "A", "suit": "clubs"}], "Maya": [{"rank": "5", "suit": "clubs"}, {"rank": "4", "suit": "clubs"}, {"rank": "6", "suit": "hearts"}], "Sofia": [{"rank": "3", "suit": "hearts"}, {"rank": "6", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}]}


game_id: 4c9b0ca9-416d-4ba3-8165-9498532eb051
timestamp: 2026-01-25 00:10:20.388774
player_id: cpu_1
player_name: Diego
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped 4 for 6 at pos 2
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: 4c9b0ca9-416d-4ba3-8165-9498532eb051
timestamp: 2026-01-25 00:10:20.395032
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: 10
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}]

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


game_id: 4c9b0ca9-416d-4ba3-8165-9498532eb051
timestamp: 2026-01-25 00:10:20.407049
player_id: cpu_3
player_name: Sofia
action: draw_deck
card_rank: 9
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": "2", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}]

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


game_id: 4c9b0ca9-416d-4ba3-8165-9498532eb051
timestamp: 2026-01-25 00:10:20.418909
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: 10
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: 4c9b0ca9-416d-4ba3-8165-9498532eb051
timestamp: 2026-01-25 00:10:20.436669
player_id: cpu_1
player_name: Diego
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "A", "suit": "diamonds"}
decision_reason: swapped 5 for A at pos 0
hand_json:
[{"rank": "5", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}]


game_id: 4c9b0ca9-416d-4ba3-8165-9498532eb051
timestamp: 2026-01-25 00:10:20.442801
player_id: cpu_2
player_name: Maya
action: take_discard
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: took A from discard
visible_opponents_json:
{"Marcus": [{"rank": "4", "suit": "diamonds"}, {"rank": "4", "suit": "spades"}, {"rank": "A", "suit": "clubs"}], "Diego": [{"rank": "5", "suit": "spades"}, {"rank": "4", "suit": "hearts"}, {"rank": "3", "suit": "spades"}, {"rank": "5", "suit": "hearts"}], "Sofia": [{"rank": "3", "suit": "hearts"}, {"rank": "6", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}]}


game_id: 4c9b0ca9-416d-4ba3-8165-9498532eb051
timestamp: 2026-01-25 00:10:20.448775
player_id: cpu_2
player_name: Maya
action: swap
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped A for 6 at pos 5
hand_json:
[{"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: 4c9b0ca9-416d-4ba3-8165-9498532eb051
timestamp: 2026-01-25 00:10:20.454447
player_id: cpu_3
player_name: Sofia
action: take_discard
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: took 6 from discard
visible_opponents_json:
{"Marcus": [{"rank": "4", "suit": "diamonds"}, {"rank": "4", "suit": "spades"}, {"rank": "A", "suit": "clubs"}], "Diego": [{"rank": "5", "suit": "spades"}, {"rank": "4", "suit": "hearts"}, {"rank": "3", "suit": "spades"}, {"rank": "5", "suit": "hearts"}], "Maya": [{"rank": "5", "suit": "clubs"}, {"rank": "4", "suit": "clubs"}, {"rank": "A", "suit": "diamonds"}]}


game_id: 4c9b0ca9-416d-4ba3-8165-9498532eb051
timestamp: 2026-01-25 00:10:20.460429
player_id: cpu_3
player_name: Sofia
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "K", "suit": "clubs"}
decision_reason: swapped 6 for K at pos 0
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}]

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


game_id: 4c9b0ca9-416d-4ba3-8165-9498532eb051
timestamp: 2026-01-25 00:10:20.466137
player_id: cpu_0
player_name: Marcus
action: take_discard
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: took K from discard
visible_opponents_json:
{"Diego": [{"rank": "5", "suit": "spades"}, {"rank": "4", "suit": "hearts"}, {"rank": "3", "suit": "spades"}, {"rank": "5", "suit": "hearts"}], "Maya": [{"rank": "5", "suit": "clubs"}, {"rank": "4", "suit": "clubs"}, {"rank": "A", "suit": "diamonds"}], "Sofia": [{"rank": "6", "suit": "hearts"}, {"rank": "3", "suit": "hearts"}, {"rank": "6", "suit": "clubs"}, {"rank": "A", "suit": "hearts"}]}


game_id: 4c9b0ca9-416d-4ba3-8165-9498532eb051
timestamp: 2026-01-25 00:10:20.472231
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: swapped K for 4 at pos 0
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: 4c9b0ca9-416d-4ba3-8165-9498532eb051
timestamp: 2026-01-25 00:10:20.478292
player_id: cpu_1
player_name: Diego
action: take_discard
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "5", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: 4c9b0ca9-416d-4ba3-8165-9498532eb051
timestamp: 2026-01-25 00:10:20.484339
player_id: cpu_1
player_name: Diego
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped 4 for 5 at pos 0
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: 4c9b0ca9-416d-4ba3-8165-9498532eb051
timestamp: 2026-01-25 00:10:20.490532
player_id: cpu_2
player_name: Maya
action: take_discard
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: 4c9b0ca9-416d-4ba3-8165-9498532eb051
timestamp: 2026-01-25 00:10:20.496673
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "2", "suit": "diamonds"}
decision_reason: swapped 5 for 2 at pos 4
hand_json:
[{"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: 4c9b0ca9-416d-4ba3-8165-9498532eb051
timestamp: 2026-01-25 00:10:20.502202
player_id: cpu_3
player_name: Sofia
action: take_discard
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: took 2 from discard
hand_json:
[{"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}]

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


game_id: 4c9b0ca9-416d-4ba3-8165-9498532eb051
timestamp: 2026-01-25 00:10:20.508149
player_id: cpu_3
player_name: Sofia
action: swap
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped 2 for 6 at pos 0
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}]

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


game_id: 4c9b0ca9-416d-4ba3-8165-9498532eb051
timestamp: 2026-01-25 00:10:20.514166
player_id: cpu_0
player_name: Marcus
action: take_discard
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: 4c9b0ca9-416d-4ba3-8165-9498532eb051
timestamp: 2026-01-25 00:10:20.520232
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "A", "suit": "spades"}
decision_reason: swapped 6 for A at pos 4
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: 4c9b0ca9-416d-4ba3-8165-9498532eb051
timestamp: 2026-01-25 00:10:20.526205
player_id: cpu_1
player_name: Diego
action: take_discard
card_rank: A
card_suit: spades
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: took A from discard
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: 4c9b0ca9-416d-4ba3-8165-9498532eb051
timestamp: 2026-01-25 00:10:20.532459
player_id: cpu_1
player_name: Diego
action: swap
card_rank: A
card_suit: spades
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped A for 5 at pos 5
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}]

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


game_id: 4c9b0ca9-416d-4ba3-8165-9498532eb051
timestamp: 2026-01-25 00:10:20.538698
player_id: cpu_2
player_name: Maya
action: take_discard
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: 4c9b0ca9-416d-4ba3-8165-9498532eb051
timestamp: 2026-01-25 00:10:20.544486
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "2", "suit": "clubs"}
decision_reason: swapped 5 for 2 at pos 1
hand_json:
[{"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: 4c9b0ca9-416d-4ba3-8165-9498532eb051
timestamp: 2026-01-25 00:10:20.550483
player_id: cpu_3
player_name: Sofia
action: take_discard
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: took 2 from discard
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}]

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


game_id: 4c9b0ca9-416d-4ba3-8165-9498532eb051
timestamp: 2026-01-25 00:10:20.556475
player_id: cpu_3
player_name: Sofia
action: swap
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 2 for 6 at pos 3
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}]

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


game_id: 4c9b0ca9-416d-4ba3-8165-9498532eb051
timestamp: 2026-01-25 00:10:20.562552
player_id: cpu_0
player_name: Marcus
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: 4c9b0ca9-416d-4ba3-8165-9498532eb051
timestamp: 2026-01-25 00:10:20.568706
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "K", "suit": "spades"}
decision_reason: swapped 6 for K at pos 1
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: 4c9b0ca9-416d-4ba3-8165-9498532eb051
timestamp: 2026-01-25 00:10:20.574640
player_id: cpu_1
player_name: Diego
action: take_discard
card_rank: K
card_suit: spades
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: took K from discard
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}]

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


game_id: 4c9b0ca9-416d-4ba3-8165-9498532eb051
timestamp: 2026-01-25 00:10:20.580775
player_id: cpu_1
player_name: Diego
action: swap
card_rank: K
card_suit: spades
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: swapped K for 4 at pos 0
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}]

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


game_id: 4c9b0ca9-416d-4ba3-8165-9498532eb051
timestamp: 2026-01-25 00:10:20.588719
player_id: cpu_2
player_name: Maya
action: take_discard
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "J", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: 4c9b0ca9-416d-4ba3-8165-9498532eb051
timestamp: 2026-01-25 00:10:20.594975
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: swapped 4 for J at pos 0
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: 4c9b0ca9-416d-4ba3-8165-9498532eb051
timestamp: 2026-01-25 00:10:20.600910
player_id: cpu_3
player_name: Sofia
action: draw_deck
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "hearts", "face_up": false}]

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


game_id: 4c9b0ca9-416d-4ba3-8165-9498532eb051
timestamp: 2026-01-25 00:10:20.607763
player_id: cpu_3
player_name: Sofia
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: swapped 3 for 8 at pos 5
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: 4c9b0ca9-416d-4ba3-8165-9498532eb051
timestamp: 2026-01-25 00:10:20.613778
player_id: cpu_0
player_name: Marcus
action: draw_deck
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: 4c9b0ca9-416d-4ba3-8165-9498532eb051
timestamp: 2026-01-25 00:10:20.623665
player_id: cpu_0
player_name: Marcus
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: swapped 6 for Q at pos 2
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}]

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


game_id: 4c9b0ca9-416d-4ba3-8165-9498532eb051
timestamp: 2026-01-25 00:10:20.630116
player_id: cpu_1
player_name: Diego
action: draw_deck
card_rank: 8
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}]

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


game_id: 4c9b0ca9-416d-4ba3-8165-9498532eb051
timestamp: 2026-01-25 00:10:20.636623
player_id: cpu_1
player_name: Diego
action: swap
card_rank: 8
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped 8 for 5 at pos 4
hand_json:
[{"rank": "K", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}]

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


game_id: 15091003-334f-4192-a7aa-0da70d8a03ad
timestamp: 2026-01-25 00:10:20.654728
player_id: cpu_0
player_name: River
action: draw_deck
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: 15091003-334f-4192-a7aa-0da70d8a03ad
timestamp: 2026-01-25 00:10:20.667558
player_id: cpu_1
player_name: Kenji
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": "3", "suit": "clubs", "face_up": false}, {"rank": "J", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": false}]

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


game_id: 15091003-334f-4192-a7aa-0da70d8a03ad
timestamp: 2026-01-25 00:10:20.677570
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: swapped 7 for J at pos 1
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": false}]

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


game_id: 15091003-334f-4192-a7aa-0da70d8a03ad
timestamp: 2026-01-25 00:10:20.683931
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: Q
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}]

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


game_id: 15091003-334f-4192-a7aa-0da70d8a03ad
timestamp: 2026-01-25 00:10:20.696433
player_id: cpu_3
player_name: Sage
action: draw_deck
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}]

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


game_id: 15091003-334f-4192-a7aa-0da70d8a03ad
timestamp: 2026-01-25 00:10:20.705919
player_id: cpu_3
player_name: Sage
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "K", "suit": "hearts"}
decision_reason: swapped 6 for K at pos 0
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}]

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


game_id: 15091003-334f-4192-a7aa-0da70d8a03ad
timestamp: 2026-01-25 00:10:20.711673
player_id: cpu_0
player_name: River
action: take_discard
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: took K from discard
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: 15091003-334f-4192-a7aa-0da70d8a03ad
timestamp: 2026-01-25 00:10:20.719237
player_id: cpu_0
player_name: River
action: swap
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped K for 5 at pos 1
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: 15091003-334f-4192-a7aa-0da70d8a03ad
timestamp: 2026-01-25 00:10:20.725051
player_id: cpu_1
player_name: Kenji
action: take_discard
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": false}]

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


game_id: 15091003-334f-4192-a7aa-0da70d8a03ad
timestamp: 2026-01-25 00:10:20.730909
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped 5 for 7 at pos 1
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": false}]

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


game_id: 15091003-334f-4192-a7aa-0da70d8a03ad
timestamp: 2026-01-25 00:10:20.737201
player_id: cpu_2
player_name: Maya
action: take_discard
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}]

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


game_id: 15091003-334f-4192-a7aa-0da70d8a03ad
timestamp: 2026-01-25 00:10:20.743135
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "K", "suit": "clubs"}
decision_reason: swapped 7 for K at pos 0
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}]

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


game_id: 15091003-334f-4192-a7aa-0da70d8a03ad
timestamp: 2026-01-25 00:10:20.748981
player_id: cpu_3
player_name: Sage
action: take_discard
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: took K from discard
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}]

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


game_id: 15091003-334f-4192-a7aa-0da70d8a03ad
timestamp: 2026-01-25 00:10:20.755127
player_id: cpu_3
player_name: Sage
action: swap
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: swapped K for 8 at pos 3
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}]

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


game_id: 15091003-334f-4192-a7aa-0da70d8a03ad
timestamp: 2026-01-25 00:10:20.761244
player_id: cpu_0
player_name: River
action: draw_deck
card_rank: 10
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: 15091003-334f-4192-a7aa-0da70d8a03ad
timestamp: 2026-01-25 00:10:20.774041
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: J
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": false}]

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


game_id: 15091003-334f-4192-a7aa-0da70d8a03ad
timestamp: 2026-01-25 00:10:20.785999
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}]

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


game_id: 15091003-334f-4192-a7aa-0da70d8a03ad
timestamp: 2026-01-25 00:10:20.791652
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped 3 for 7 at pos 0
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}]

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


game_id: 15091003-334f-4192-a7aa-0da70d8a03ad
timestamp: 2026-01-25 00:10:20.797592
player_id: cpu_3
player_name: Sage
action: draw_deck
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}]

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


game_id: 15091003-334f-4192-a7aa-0da70d8a03ad
timestamp: 2026-01-25 00:10:20.809214
player_id: cpu_0
player_name: River
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: took 6 from discard
visible_opponents_json:
{"Kenji": [{"rank": "5", "suit": "clubs"}, {"rank": "6", "suit": "spades"}], "Maya": [{"rank": "3", "suit": "spades"}, {"rank": "7", "suit": "spades"}, {"rank": "7", "suit": "diamonds"}], "Sage": [{"rank": "6", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}, {"rank": "K", "suit": "clubs"}]}


game_id: 15091003-334f-4192-a7aa-0da70d8a03ad
timestamp: 2026-01-25 00:10:20.814903
player_id: cpu_0
player_name: River
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: swapped 6 for 9 at pos 0
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: 15091003-334f-4192-a7aa-0da70d8a03ad
timestamp: 2026-01-25 00:10:20.820979
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"River": [{"rank": "6", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}, {"rank": "3", "suit": "diamonds"}], "Maya": [{"rank": "3", "suit": "spades"}, {"rank": "7", "suit": "spades"}, {"rank": "7", "suit": "diamonds"}], "Sage": [{"rank": "6", "suit": "diamonds"}, {"rank": "2", "suit": "diamonds"}, {"rank": "K", "suit": "clubs"}]}


game_id: 15091003-334f-4192-a7aa-0da70d8a03ad
timestamp: 2026-01-25 00:10:20.827365
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped 2 for 6 at pos 3
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": false}]

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


game_id: 15091003-334f-4192-a7aa-0da70d8a03ad
timestamp: 2026-01-25 00:10:20.833435
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: J
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}]

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


game_id: 15091003-334f-4192-a7aa-0da70d8a03ad
timestamp: 2026-01-25 00:10:20.845707
player_id: cpu_3
player_name: Sage
action: draw_deck
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"River": [{"rank": "6", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}, {"rank": "3", "suit": "diamonds"}], "Kenji": [{"rank": "5", "suit": "clubs"}, {"rank": "2", "suit": "hearts"}], "Maya": [{"rank": "3", "suit": "spades"}, {"rank": "7", "suit": "spades"}, {"rank": "7", "suit": "diamonds"}]}


game_id: 15091003-334f-4192-a7aa-0da70d8a03ad
timestamp: 2026-01-25 00:10:20.851782
player_id: cpu_3
player_name: Sage
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped A for 6 at pos 0
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}]

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


game_id: 15091003-334f-4192-a7aa-0da70d8a03ad
timestamp: 2026-01-25 00:10:20.858243
player_id: cpu_0
player_name: River
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": "6", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: 15091003-334f-4192-a7aa-0da70d8a03ad
timestamp: 2026-01-25 00:10:20.864382
player_id: cpu_0
player_name: River
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: swapped 6 for 4 at pos 3
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: 15091003-334f-4192-a7aa-0da70d8a03ad
timestamp: 2026-01-25 00:10:20.870475
player_id: cpu_1
player_name: Kenji
action: take_discard
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": false}]

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


game_id: 15091003-334f-4192-a7aa-0da70d8a03ad
timestamp: 2026-01-25 00:10:20.876424
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped 4 for 5 at pos 1
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": false}]

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


game_id: 15091003-334f-4192-a7aa-0da70d8a03ad
timestamp: 2026-01-25 00:10:20.882461
player_id: cpu_2
player_name: Maya
action: take_discard
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: took 5 from discard
visible_opponents_json:
{"River": [{"rank": "6", "suit": "clubs"}, {"rank": "K", "suit": "hearts"}, {"rank": "6", "suit": "diamonds"}, {"rank": "3", "suit": "diamonds"}], "Kenji": [{"rank": "4", "suit": "diamonds"}, {"rank": "2", "suit": "hearts"}], "Sage": [{"rank": "A", "suit": "hearts"}, {"rank": "2", "suit": "diamonds"}, {"rank": "K", "suit": "clubs"}]}


game_id: 15091003-334f-4192-a7aa-0da70d8a03ad
timestamp: 2026-01-25 00:10:20.888523
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped 5 for 7 at pos 2
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}]

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


game_id: 15091003-334f-4192-a7aa-0da70d8a03ad
timestamp: 2026-01-25 00:10:20.894684
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": "A", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}]

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


game_id: 15091003-334f-4192-a7aa-0da70d8a03ad
timestamp: 2026-01-25 00:10:20.900828
player_id: cpu_3
player_name: Sage
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "2", "suit": "clubs"}
decision_reason: swapped 7 for 2 at pos 1
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}]

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


game_id: 15091003-334f-4192-a7aa-0da70d8a03ad
timestamp: 2026-01-25 00:10:20.906732
player_id: cpu_0
player_name: River
action: take_discard
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: took 2 from discard
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: 15091003-334f-4192-a7aa-0da70d8a03ad
timestamp: 2026-01-25 00:10:20.913296
player_id: cpu_0
player_name: River
action: swap
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 2 for 6 at pos 0
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: 15091003-334f-4192-a7aa-0da70d8a03ad
timestamp: 2026-01-25 00:10:20.919322
player_id: cpu_1
player_name: Kenji
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": false}]

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


game_id: 15091003-334f-4192-a7aa-0da70d8a03ad
timestamp: 2026-01-25 00:10:20.925843
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: swapped 6 for 10 at pos 4
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": false}]

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


game_id: 15091003-334f-4192-a7aa-0da70d8a03ad
timestamp: 2026-01-25 00:10:20.932088
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}]

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


game_id: 15091003-334f-4192-a7aa-0da70d8a03ad
timestamp: 2026-01-25 00:10:20.938835
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 3 for 7 at pos 3
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}]

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


game_id: 15091003-334f-4192-a7aa-0da70d8a03ad
timestamp: 2026-01-25 00:10:20.945181
player_id: cpu_3
player_name: Sage
action: take_discard
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}]

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


game_id: 15091003-334f-4192-a7aa-0da70d8a03ad
timestamp: 2026-01-25 00:10:20.951135
player_id: cpu_3
player_name: Sage
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "A", "suit": "spades"}
decision_reason: swapped 7 for A at pos 4
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}]

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


game_id: 15091003-334f-4192-a7aa-0da70d8a03ad
timestamp: 2026-01-25 00:10:20.957294
player_id: cpu_0
player_name: River
action: take_discard
card_rank: A
card_suit: spades
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: took A from discard
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: 15091003-334f-4192-a7aa-0da70d8a03ad
timestamp: 2026-01-25 00:10:20.963231
player_id: cpu_0
player_name: River
action: swap
card_rank: A
card_suit: spades
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped A for 6 at pos 3
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: 15091003-334f-4192-a7aa-0da70d8a03ad
timestamp: 2026-01-25 00:10:20.968951
player_id: cpu_1
player_name: Kenji
action: take_discard
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": false}]

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


game_id: 15091003-334f-4192-a7aa-0da70d8a03ad
timestamp: 2026-01-25 00:10:20.974902
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "3", "suit": "clubs"}
decision_reason: swapped 6 for 3 at pos 0
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": false}]

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


game_id: 15091003-334f-4192-a7aa-0da70d8a03ad
timestamp: 2026-01-25 00:10:20.980814
player_id: cpu_2
player_name: Maya
action: take_discard
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}]

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


game_id: 15091003-334f-4192-a7aa-0da70d8a03ad
timestamp: 2026-01-25 00:10:20.987069
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped 3 for 5 at pos 2
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}]

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


game_id: 15091003-334f-4192-a7aa-0da70d8a03ad
timestamp: 2026-01-25 00:10:20.994906
player_id: cpu_3
player_name: Sage
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": "A", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}]

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


game_id: 15091003-334f-4192-a7aa-0da70d8a03ad
timestamp: 2026-01-25 00:10:21.000614
player_id: cpu_3
player_name: Sage
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped 5 for 7 at pos 1
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}]

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


game_id: 15091003-334f-4192-a7aa-0da70d8a03ad
timestamp: 2026-01-25 00:10:21.006485
player_id: cpu_0
player_name: River
action: take_discard
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: 15091003-334f-4192-a7aa-0da70d8a03ad
timestamp: 2026-01-25 00:10:21.013209
player_id: cpu_0
player_name: River
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: swapped 7 for 9 at pos 2
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: 15091003-334f-4192-a7aa-0da70d8a03ad
timestamp: 2026-01-25 00:10:21.019998
player_id: cpu_1
player_name: Kenji
action: draw_deck
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": false}]

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


game_id: 15091003-334f-4192-a7aa-0da70d8a03ad
timestamp: 2026-01-25 00:10:21.026167
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped A for 6 at pos 0
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": false}]

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


game_id: 15091003-334f-4192-a7aa-0da70d8a03ad
timestamp: 2026-01-25 00:10:21.032733
player_id: cpu_2
player_name: Maya
action: take_discard
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}]

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


game_id: 15091003-334f-4192-a7aa-0da70d8a03ad
timestamp: 2026-01-25 00:10:21.038745
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "2", "suit": "spades"}
decision_reason: swapped 6 for 2 at pos 5
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}]

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


game_id: 15091003-334f-4192-a7aa-0da70d8a03ad
timestamp: 2026-01-25 00:10:21.045550
player_id: cpu_3
player_name: Sage
action: take_discard
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took 2 from discard
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}]

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


game_id: 15091003-334f-4192-a7aa-0da70d8a03ad
timestamp: 2026-01-25 00:10:21.051938
player_id: cpu_3
player_name: Sage
action: swap
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 2 for 7 at pos 4
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}]

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


game_id: 15091003-334f-4192-a7aa-0da70d8a03ad
timestamp: 2026-01-25 00:10:21.058196
player_id: cpu_0
player_name: River
action: take_discard
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: 15091003-334f-4192-a7aa-0da70d8a03ad
timestamp: 2026-01-25 00:10:21.064004
player_id: cpu_0
player_name: River
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "4", "suit": "hearts"}
decision_reason: swapped 7 for 4 at pos 4
hand_json:
[{"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": true}]

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


game_id: 15091003-334f-4192-a7aa-0da70d8a03ad
timestamp: 2026-01-25 00:10:21.070163
player_id: cpu_1
player_name: Kenji
action: take_discard
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": false}]

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


game_id: 15091003-334f-4192-a7aa-0da70d8a03ad
timestamp: 2026-01-25 00:10:21.075862
player_id: cpu_1
player_name: Kenji
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 4 for 6 at pos 4
hand_json:
[{"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": false}]

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


game_id: 15091003-334f-4192-a7aa-0da70d8a03ad
timestamp: 2026-01-25 00:10:21.081724
player_id: cpu_2
player_name: Maya
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}]

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


game_id: 15091003-334f-4192-a7aa-0da70d8a03ad
timestamp: 2026-01-25 00:10:21.088411
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped 6 for 5 at pos 4
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}]

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


game_id: 15091003-334f-4192-a7aa-0da70d8a03ad
timestamp: 2026-01-25 00:10:21.094636
player_id: cpu_3
player_name: Sage
action: take_discard
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": false}]

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


game_id: 15091003-334f-4192-a7aa-0da70d8a03ad
timestamp: 2026-01-25 00:10:21.100888
player_id: cpu_3
player_name: Sage
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "4", "suit": "spades"}
decision_reason: swapped 5 for 4 at pos 5
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: a5e0631b-1502-4cf5-b9b4-dee5de7cbd4d
timestamp: 2026-01-25 00:10:21.119998
player_id: cpu_0
player_name: River
action: draw_deck
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Maya": [{"rank": "Q", "suit": "clubs"}, {"rank": "7", "suit": "diamonds"}], "Sofia": [{"rank": "4", "suit": "hearts"}, {"rank": "Q", "suit": "hearts"}], "Kenji": [{"rank": "9", "suit": "hearts"}, {"rank": "10", "suit": "clubs"}]}


game_id: a5e0631b-1502-4cf5-b9b4-dee5de7cbd4d
timestamp: 2026-01-25 00:10:21.126915
player_id: cpu_0
player_name: River
action: swap
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: swapped A for 9 at pos 3
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Maya": [{"rank": "Q", "suit": "clubs"}, {"rank": "7", "suit": "diamonds"}], "Sofia": [{"rank": "4", "suit": "hearts"}, {"rank": "Q", "suit": "hearts"}], "Kenji": [{"rank": "9", "suit": "hearts"}, {"rank": "10", "suit": "clubs"}]}


game_id: a5e0631b-1502-4cf5-b9b4-dee5de7cbd4d
timestamp: 2026-01-25 00:10:21.132925
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: J
card_suit: spades
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "Q", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}]

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


game_id: a5e0631b-1502-4cf5-b9b4-dee5de7cbd4d
timestamp: 2026-01-25 00:10:21.145524
player_id: cpu_2
player_name: Sofia
action: draw_deck
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}]

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


game_id: a5e0631b-1502-4cf5-b9b4-dee5de7cbd4d
timestamp: 2026-01-25 00:10:21.152004
player_id: cpu_2
player_name: Sofia
action: swap
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: swapped 3 for Q at pos 3
hand_json:
[{"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}]

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


game_id: a5e0631b-1502-4cf5-b9b4-dee5de7cbd4d
timestamp: 2026-01-25 00:10:21.158567
player_id: cpu_3
player_name: Kenji
action: draw_deck
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "9", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "10", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}]

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


game_id: a5e0631b-1502-4cf5-b9b4-dee5de7cbd4d
timestamp: 2026-01-25 00:10:21.165058
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 2
card_suit: spades
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: swapped 2 for 10 at pos 4
hand_json:
[{"rank": "9", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}]

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


game_id: a5e0631b-1502-4cf5-b9b4-dee5de7cbd4d
timestamp: 2026-01-25 00:10:21.171508
player_id: cpu_0
player_name: River
action: draw_deck
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}]

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


game_id: a5e0631b-1502-4cf5-b9b4-dee5de7cbd4d
timestamp: 2026-01-25 00:10:21.177488
player_id: cpu_0
player_name: River
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped 3 for 6 at pos 1
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}]

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


game_id: a5e0631b-1502-4cf5-b9b4-dee5de7cbd4d
timestamp: 2026-01-25 00:10:21.183665
player_id: cpu_1
player_name: Maya
action: take_discard
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "Q", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}]

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


game_id: a5e0631b-1502-4cf5-b9b4-dee5de7cbd4d
timestamp: 2026-01-25 00:10:21.190305
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: swapped 6 for Q at pos 0
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}]

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


game_id: a5e0631b-1502-4cf5-b9b4-dee5de7cbd4d
timestamp: 2026-01-25 00:10:21.196408
player_id: cpu_2
player_name: Sofia
action: draw_deck
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}]

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


game_id: a5e0631b-1502-4cf5-b9b4-dee5de7cbd4d
timestamp: 2026-01-25 00:10:21.202890
player_id: cpu_2
player_name: Sofia
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: swapped 3 for 10 at pos 0
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}]

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


game_id: a5e0631b-1502-4cf5-b9b4-dee5de7cbd4d
timestamp: 2026-01-25 00:10:21.209412
player_id: cpu_3
player_name: Kenji
action: draw_deck
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "9", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}]

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


game_id: a5e0631b-1502-4cf5-b9b4-dee5de7cbd4d
timestamp: 2026-01-25 00:10:21.215813
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: swapped 6 for 9 at pos 0
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}]

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


game_id: a5e0631b-1502-4cf5-b9b4-dee5de7cbd4d
timestamp: 2026-01-25 00:10:21.222157
player_id: cpu_0
player_name: River
action: draw_deck
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}]

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


game_id: a5e0631b-1502-4cf5-b9b4-dee5de7cbd4d
timestamp: 2026-01-25 00:10:21.228546
player_id: cpu_0
player_name: River
action: swap
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "3", "suit": "diamonds"}
decision_reason: swapped K for 3 at pos 1
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}]

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


game_id: a5e0631b-1502-4cf5-b9b4-dee5de7cbd4d
timestamp: 2026-01-25 00:10:21.235158
player_id: cpu_1
player_name: Maya
action: take_discard
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}]

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


game_id: a5e0631b-1502-4cf5-b9b4-dee5de7cbd4d
timestamp: 2026-01-25 00:10:21.241350
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 3 for 7 at pos 4
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}]

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


game_id: a5e0631b-1502-4cf5-b9b4-dee5de7cbd4d
timestamp: 2026-01-25 00:10:21.247379
player_id: cpu_2
player_name: Sofia
action: draw_deck
card_rank: 10
card_suit: spades
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}]

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


game_id: a5e0631b-1502-4cf5-b9b4-dee5de7cbd4d
timestamp: 2026-01-25 00:10:21.260592
player_id: cpu_3
player_name: Kenji
action: draw_deck
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}]

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


game_id: a5e0631b-1502-4cf5-b9b4-dee5de7cbd4d
timestamp: 2026-01-25 00:10:21.266944
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 4 for 6 at pos 0
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}]

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


game_id: a5e0631b-1502-4cf5-b9b4-dee5de7cbd4d
timestamp: 2026-01-25 00:10:21.273067
player_id: cpu_0
player_name: River
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}]

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


game_id: a5e0631b-1502-4cf5-b9b4-dee5de7cbd4d
timestamp: 2026-01-25 00:10:21.279316
player_id: cpu_0
player_name: River
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped 6 for 5 at pos 5
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: a5e0631b-1502-4cf5-b9b4-dee5de7cbd4d
timestamp: 2026-01-25 00:10:21.285668
player_id: cpu_1
player_name: Maya
action: take_discard
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}]

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


game_id: a5e0631b-1502-4cf5-b9b4-dee5de7cbd4d
timestamp: 2026-01-25 00:10:21.292328
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped 5 for 6 at pos 0
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}]

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


game_id: a5e0631b-1502-4cf5-b9b4-dee5de7cbd4d
timestamp: 2026-01-25 00:10:21.298550
player_id: cpu_2
player_name: Sofia
action: draw_deck
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"River": [{"rank": "K", "suit": "diamonds"}, {"rank": "A", "suit": "diamonds"}, {"rank": "6", "suit": "clubs"}], "Maya": [{"rank": "5", "suit": "diamonds"}, {"rank": "3", "suit": "diamonds"}], "Kenji": [{"rank": "4", "suit": "diamonds"}, {"rank": "2", "suit": "spades"}]}


game_id: a5e0631b-1502-4cf5-b9b4-dee5de7cbd4d
timestamp: 2026-01-25 00:10:21.304536
player_id: cpu_2
player_name: Sofia
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": "3", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}]

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


game_id: a5e0631b-1502-4cf5-b9b4-dee5de7cbd4d
timestamp: 2026-01-25 00:10:21.310879
player_id: cpu_3
player_name: Kenji
action: take_discard
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}]

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


game_id: a5e0631b-1502-4cf5-b9b4-dee5de7cbd4d
timestamp: 2026-01-25 00:10:21.316937
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 4
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped 4 for 7 at pos 2
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}]

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


game_id: a5e0631b-1502-4cf5-b9b4-dee5de7cbd4d
timestamp: 2026-01-25 00:10:21.323047
player_id: cpu_0
player_name: River
action: draw_deck
card_rank: J
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: a5e0631b-1502-4cf5-b9b4-dee5de7cbd4d
timestamp: 2026-01-25 00:10:21.334928
player_id: cpu_1
player_name: Maya
action: draw_deck
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}]

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


game_id: a5e0631b-1502-4cf5-b9b4-dee5de7cbd4d
timestamp: 2026-01-25 00:10:21.341101
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "A", "suit": "clubs"}
decision_reason: swapped 6 for A at pos 2
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}]

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


game_id: a5e0631b-1502-4cf5-b9b4-dee5de7cbd4d
timestamp: 2026-01-25 00:10:21.347412
player_id: cpu_2
player_name: Sofia
action: take_discard
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: took A from discard
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}]

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


game_id: a5e0631b-1502-4cf5-b9b4-dee5de7cbd4d
timestamp: 2026-01-25 00:10:21.353365
player_id: cpu_2
player_name: Sofia
action: swap
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "3", "suit": "spades"}
decision_reason: swapped A for 3 at pos 0
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}]

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


game_id: a5e0631b-1502-4cf5-b9b4-dee5de7cbd4d
timestamp: 2026-01-25 00:10:21.359626
player_id: cpu_3
player_name: Kenji
action: take_discard
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}]

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


game_id: a5e0631b-1502-4cf5-b9b4-dee5de7cbd4d
timestamp: 2026-01-25 00:10:21.366040
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: swapped 3 for 4 at pos 0
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}]

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


game_id: a5e0631b-1502-4cf5-b9b4-dee5de7cbd4d
timestamp: 2026-01-25 00:10:21.372013
player_id: cpu_0
player_name: River
action: take_discard
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: took 4 from discard
visible_opponents_json:
{"Maya": [{"rank": "5", "suit": "diamonds"}, {"rank": "6", "suit": "hearts"}, {"rank": "3", "suit": "diamonds"}], "Sofia": [{"rank": "A", "suit": "clubs"}, {"rank": "2", "suit": "clubs"}, {"rank": "3", "suit": "hearts"}], "Kenji": [{"rank": "3", "suit": "spades"}, {"rank": "4", "suit": "hearts"}, {"rank": "2", "suit": "spades"}]}


game_id: a5e0631b-1502-4cf5-b9b4-dee5de7cbd4d
timestamp: 2026-01-25 00:10:21.378125
player_id: cpu_0
player_name: River
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": "J", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}]

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


game_id: a5e0631b-1502-4cf5-b9b4-dee5de7cbd4d
timestamp: 2026-01-25 00:10:21.384206
player_id: cpu_1
player_name: Maya
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": false}]

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


game_id: a5e0631b-1502-4cf5-b9b4-dee5de7cbd4d
timestamp: 2026-01-25 00:10:21.390279
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "A", "suit": "hearts"}
decision_reason: swapped 6 for A at pos 5
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: a5e0631b-1502-4cf5-b9b4-dee5de7cbd4d
timestamp: 2026-01-25 00:10:21.398081
player_id: cpu_2
player_name: Sofia
action: take_discard
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: took A from discard
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}]

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


game_id: a5e0631b-1502-4cf5-b9b4-dee5de7cbd4d
timestamp: 2026-01-25 00:10:21.404296
player_id: cpu_2
player_name: Sofia
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "3", "suit": "hearts"}
decision_reason: swapped A for 3 at pos 3
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}]

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


game_id: a5e0631b-1502-4cf5-b9b4-dee5de7cbd4d
timestamp: 2026-01-25 00:10:21.410259
player_id: cpu_3
player_name: Kenji
action: take_discard
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}]

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


game_id: a5e0631b-1502-4cf5-b9b4-dee5de7cbd4d
timestamp: 2026-01-25 00:10:21.416267
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "K", "suit": "hearts"}
decision_reason: swapped 3 for K at pos 3
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}]

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


game_id: a5e0631b-1502-4cf5-b9b4-dee5de7cbd4d
timestamp: 2026-01-25 00:10:21.422638
player_id: cpu_0
player_name: River
action: take_discard
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: took K from discard
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}]

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


game_id: a5e0631b-1502-4cf5-b9b4-dee5de7cbd4d
timestamp: 2026-01-25 00:10:21.428823
player_id: cpu_0
player_name: River
action: swap
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: swapped K for 4 at pos 5
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: a5e0631b-1502-4cf5-b9b4-dee5de7cbd4d
timestamp: 2026-01-25 00:10:21.435148
player_id: cpu_1
player_name: Maya
action: take_discard
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: a5e0631b-1502-4cf5-b9b4-dee5de7cbd4d
timestamp: 2026-01-25 00:10:21.440997
player_id: cpu_1
player_name: Maya
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "hearts"}
decision_reason: swapped 4 for 6 at pos 2
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: a5e0631b-1502-4cf5-b9b4-dee5de7cbd4d
timestamp: 2026-01-25 00:10:21.447053
player_id: cpu_2
player_name: Sofia
action: take_discard
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}]

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


game_id: a5e0631b-1502-4cf5-b9b4-dee5de7cbd4d
timestamp: 2026-01-25 00:10:21.453439
player_id: cpu_2
player_name: Sofia
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: swapped 6 for 8 at pos 1
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}]

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


game_id: a5e0631b-1502-4cf5-b9b4-dee5de7cbd4d
timestamp: 2026-01-25 00:10:21.459697
player_id: cpu_3
player_name: Kenji
action: draw_deck
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}]

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


game_id: a5e0631b-1502-4cf5-b9b4-dee5de7cbd4d
timestamp: 2026-01-25 00:10:21.465895
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "K", "suit": "clubs"}
decision_reason: swapped 4 for K at pos 5
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: a5e0631b-1502-4cf5-b9b4-dee5de7cbd4d
timestamp: 2026-01-25 00:10:21.471806
player_id: cpu_0
player_name: River
action: take_discard
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: took K from discard
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: a5e0631b-1502-4cf5-b9b4-dee5de7cbd4d
timestamp: 2026-01-25 00:10:21.478067
player_id: cpu_0
player_name: River
action: swap
card_rank: K
card_suit: clubs
discard_top_json: {"rank": "A", "suit": "diamonds"}
decision_reason: swapped K for A at pos 3
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: a5e0631b-1502-4cf5-b9b4-dee5de7cbd4d
timestamp: 2026-01-25 00:10:21.484142
player_id: cpu_1
player_name: Maya
action: take_discard
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: took A from discard
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}]

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


game_id: a5e0631b-1502-4cf5-b9b4-dee5de7cbd4d
timestamp: 2026-01-25 00:10:21.490051
player_id: cpu_1
player_name: Maya
action: swap
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped A for 6 at pos 5
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: a5e0631b-1502-4cf5-b9b4-dee5de7cbd4d
timestamp: 2026-01-25 00:10:21.496434
player_id: cpu_2
player_name: Sofia
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "J", "suit": "clubs", "face_up": false}]

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


game_id: a5e0631b-1502-4cf5-b9b4-dee5de7cbd4d
timestamp: 2026-01-25 00:10:21.502552
player_id: cpu_2
player_name: Sofia
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: swapped 6 for Q at pos 4
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}]

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


game_id: a5e0631b-1502-4cf5-b9b4-dee5de7cbd4d
timestamp: 2026-01-25 00:10:21.509268
player_id: cpu_3
player_name: Kenji
action: draw_deck
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: a5e0631b-1502-4cf5-b9b4-dee5de7cbd4d
timestamp: 2026-01-25 00:10:21.515365
player_id: cpu_3
player_name: Kenji
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: swapped 6 for 10 at pos 1
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}]

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


game_id: a5e0631b-1502-4cf5-b9b4-dee5de7cbd4d
timestamp: 2026-01-25 00:10:21.521680
player_id: cpu_0
player_name: River
action: draw_deck
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: a5e0631b-1502-4cf5-b9b4-dee5de7cbd4d
timestamp: 2026-01-25 00:10:21.531803
player_id: cpu_0
player_name: River
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "A", "suit": "spades"}
decision_reason: swapped 7 for A at pos 4
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "hearts", "face_up": true}]

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


game_id: a5e0631b-1502-4cf5-b9b4-dee5de7cbd4d
timestamp: 2026-01-25 00:10:21.537986
player_id: cpu_1
player_name: Maya
action: take_discard
card_rank: A
card_suit: spades
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: took A from discard
hand_json:
[{"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: a5e0631b-1502-4cf5-b9b4-dee5de7cbd4d
timestamp: 2026-01-25 00:10:21.544011
player_id: cpu_1
player_name: Maya
action: swap
card_rank: A
card_suit: spades
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped A for 5 at pos 0
hand_json:
[{"rank": "A", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "diamonds", "face_up": true}]

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


game_id: a5e0631b-1502-4cf5-b9b4-dee5de7cbd4d
timestamp: 2026-01-25 00:10:21.550593
player_id: cpu_2
player_name: Sofia
action: take_discard
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "clubs", "face_up": false}]

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


game_id: a5e0631b-1502-4cf5-b9b4-dee5de7cbd4d
timestamp: 2026-01-25 00:10:21.556998
player_id: cpu_2
player_name: Sofia
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: swapped 5 for J at pos 5
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}]

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


game_id: 2a80acd5-903a-43c8-a3c9-5f69b3e30119
timestamp: 2026-01-25 00:10:21.574681
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": "2", "suit": "hearts", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}]

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


game_id: 2a80acd5-903a-43c8-a3c9-5f69b3e30119
timestamp: 2026-01-25 00:10:21.580964
player_id: cpu_0
player_name: Priya
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: swapped 5 for 9 at pos 1
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}]

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


game_id: 2a80acd5-903a-43c8-a3c9-5f69b3e30119
timestamp: 2026-01-25 00:10:21.587149
player_id: cpu_1
player_name: Marcus
action: take_discard
card_rank: 9
card_suit: hearts
decision_reason: took 9 from discard
hand_json:
[{"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": false}]

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


game_id: 2a80acd5-903a-43c8-a3c9-5f69b3e30119
timestamp: 2026-01-25 00:10:21.593642
player_id: cpu_1
player_name: Marcus
action: swap
card_rank: 9
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped 9 for 5 at pos 5
hand_json:
[{"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": true}]

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


game_id: 2a80acd5-903a-43c8-a3c9-5f69b3e30119
timestamp: 2026-01-25 00:10:21.600170
player_id: cpu_2
player_name: Sage
action: take_discard
card_rank: 5
card_suit: hearts
decision_reason: took 5 from discard
hand_json:
[{"rank": "5", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Priya": [{"rank": "5", "suit": "diamonds"}, {"rank": "7", "suit": "hearts"}], "Marcus": [{"rank": "9", "suit": "spades"}, {"rank": "8", "suit": "spades"}, {"rank": "9", "suit": "hearts"}], "Maya": [{"rank": "Q", "suit": "hearts"}, {"rank": "6", "suit": "diamonds"}]}


game_id: 2a80acd5-903a-43c8-a3c9-5f69b3e30119
timestamp: 2026-01-25 00:10:21.606402
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: swapped 5 for 10 at pos 3
hand_json:
[{"rank": "5", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}]

visible_opponents_json:
{"Priya": [{"rank": "5", "suit": "diamonds"}, {"rank": "7", "suit": "hearts"}], "Marcus": [{"rank": "9", "suit": "spades"}, {"rank": "8", "suit": "spades"}, {"rank": "9", "suit": "hearts"}], "Maya": [{"rank": "Q", "suit": "hearts"}, {"rank": "6", "suit": "diamonds"}]}


game_id: 2a80acd5-903a-43c8-a3c9-5f69b3e30119
timestamp: 2026-01-25 00:10:21.612625
player_id: cpu_3
player_name: Maya
action: draw_deck
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}]

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


game_id: 2a80acd5-903a-43c8-a3c9-5f69b3e30119
timestamp: 2026-01-25 00:10:21.619086
player_id: cpu_3
player_name: Maya
action: swap
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: swapped A for Q at pos 1
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}]

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


game_id: 2a80acd5-903a-43c8-a3c9-5f69b3e30119
timestamp: 2026-01-25 00:10:21.625059
player_id: cpu_0
player_name: Priya
action: draw_deck
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}]

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


game_id: 2a80acd5-903a-43c8-a3c9-5f69b3e30119
timestamp: 2026-01-25 00:10:21.631057
player_id: cpu_0
player_name: Priya
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped 6 for 7 at pos 3
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}]

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


game_id: 2a80acd5-903a-43c8-a3c9-5f69b3e30119
timestamp: 2026-01-25 00:10:21.637413
player_id: cpu_1
player_name: Marcus
action: take_discard
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": true}]

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


game_id: 2a80acd5-903a-43c8-a3c9-5f69b3e30119
timestamp: 2026-01-25 00:10:21.643298
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": "10", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": true}]

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


game_id: 2a80acd5-903a-43c8-a3c9-5f69b3e30119
timestamp: 2026-01-25 00:10:21.649575
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}]

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


game_id: 2a80acd5-903a-43c8-a3c9-5f69b3e30119
timestamp: 2026-01-25 00:10:21.655822
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped 4 for 5 at pos 3
hand_json:
[{"rank": "5", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}]

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


game_id: 2a80acd5-903a-43c8-a3c9-5f69b3e30119
timestamp: 2026-01-25 00:10:21.662336
player_id: cpu_3
player_name: Maya
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": "4", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}]

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


game_id: 2a80acd5-903a-43c8-a3c9-5f69b3e30119
timestamp: 2026-01-25 00:10:21.668085
player_id: cpu_3
player_name: Maya
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped 5 for 6 at pos 3
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}]

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


game_id: 2a80acd5-903a-43c8-a3c9-5f69b3e30119
timestamp: 2026-01-25 00:10:21.674723
player_id: cpu_0
player_name: Priya
action: take_discard
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}]

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


game_id: 2a80acd5-903a-43c8-a3c9-5f69b3e30119
timestamp: 2026-01-25 00:10:21.680711
player_id: cpu_0
player_name: Priya
action: swap
card_rank: 6
card_suit: diamonds
discard_top_json: {"rank": "2", "suit": "hearts"}
decision_reason: swapped 6 for 2 at pos 0
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}]

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


game_id: 2a80acd5-903a-43c8-a3c9-5f69b3e30119
timestamp: 2026-01-25 00:10:21.686599
player_id: cpu_1
player_name: Marcus
action: take_discard
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: took 2 from discard
hand_json:
[{"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": true}]

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


game_id: 2a80acd5-903a-43c8-a3c9-5f69b3e30119
timestamp: 2026-01-25 00:10:21.692414
player_id: cpu_1
player_name: Marcus
action: swap
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: swapped 2 for 9 at pos 5
hand_json:
[{"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: 2a80acd5-903a-43c8-a3c9-5f69b3e30119
timestamp: 2026-01-25 00:10:21.698526
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}]

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


game_id: 2a80acd5-903a-43c8-a3c9-5f69b3e30119
timestamp: 2026-01-25 00:10:21.710237
player_id: cpu_3
player_name: Maya
action: draw_deck
card_rank: 10
card_suit: spades
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}]

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


game_id: 2a80acd5-903a-43c8-a3c9-5f69b3e30119
timestamp: 2026-01-25 00:10:21.722060
player_id: cpu_0
player_name: Priya
action: draw_deck
card_rank: J
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}]

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


game_id: 2a80acd5-903a-43c8-a3c9-5f69b3e30119
timestamp: 2026-01-25 00:10:21.740447
player_id: cpu_1
player_name: Marcus
action: swap
card_rank: A
card_suit: spades
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: swapped A for 8 at pos 3
hand_json:
[{"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}]


game_id: 2a80acd5-903a-43c8-a3c9-5f69b3e30119
timestamp: 2026-01-25 00:10:21.746658
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: Q
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Priya": [{"rank": "6", "suit": "diamonds"}, {"rank": "5", "suit": "diamonds"}, {"rank": "6", "suit": "clubs"}], "Marcus": [{"rank": "7", "suit": "hearts"}, {"rank": "A", "suit": "spades"}, {"rank": "2", "suit": "hearts"}], "Maya": [{"rank": "A", "suit": "diamonds"}, {"rank": "5", "suit": "hearts"}]}


game_id: 2a80acd5-903a-43c8-a3c9-5f69b3e30119
timestamp: 2026-01-25 00:10:21.759815
player_id: cpu_3
player_name: Maya
action: draw_deck
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Priya": [{"rank": "6", "suit": "diamonds"}, {"rank": "5", "suit": "diamonds"}, {"rank": "6", "suit": "clubs"}], "Marcus": [{"rank": "7", "suit": "hearts"}, {"rank": "A", "suit": "spades"}, {"rank": "2", "suit": "hearts"}], "Sage": [{"rank": "K", "suit": "clubs"}, {"rank": "4", "suit": "diamonds"}]}


game_id: 2a80acd5-903a-43c8-a3c9-5f69b3e30119
timestamp: 2026-01-25 00:10:21.771857
player_id: cpu_0
player_name: Priya
action: draw_deck
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Marcus": [{"rank": "7", "suit": "hearts"}, {"rank": "A", "suit": "spades"}, {"rank": "2", "suit": "hearts"}], "Sage": [{"rank": "K", "suit": "clubs"}, {"rank": "4", "suit": "diamonds"}], "Maya": [{"rank": "A", "suit": "diamonds"}, {"rank": "5", "suit": "hearts"}]}


game_id: 2a80acd5-903a-43c8-a3c9-5f69b3e30119
timestamp: 2026-01-25 00:10:21.777970
player_id: cpu_0
player_name: Priya
action: swap
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: swapped K for 6 at pos 0
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}]

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


game_id: 2a80acd5-903a-43c8-a3c9-5f69b3e30119
timestamp: 2026-01-25 00:10:21.783729
player_id: cpu_1
player_name: Marcus
action: draw_deck
card_rank: 9
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: 2a80acd5-903a-43c8-a3c9-5f69b3e30119
timestamp: 2026-01-25 00:10:21.795046
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: drew from deck
visible_opponents_json:
{"Priya": [{"rank": "K", "suit": "hearts"}, {"rank": "5", "suit": "diamonds"}, {"rank": "6", "suit": "clubs"}], "Marcus": [{"rank": "7", "suit": "hearts"}, {"rank": "A", "suit": "spades"}, {"rank": "2", "suit": "hearts"}], "Maya": [{"rank": "A", "suit": "diamonds"}, {"rank": "5", "suit": "hearts"}]}


game_id: 2a80acd5-903a-43c8-a3c9-5f69b3e30119
timestamp: 2026-01-25 00:10:21.802427
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: swapped 3 for 4 at pos 3
hand_json:
[{"rank": "5", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}]

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


game_id: 2a80acd5-903a-43c8-a3c9-5f69b3e30119
timestamp: 2026-01-25 00:10:21.808468
player_id: cpu_3
player_name: Maya
action: take_discard
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: took 4 from discard
visible_opponents_json:
{"Priya": [{"rank": "K", "suit": "hearts"}, {"rank": "5", "suit": "diamonds"}, {"rank": "6", "suit": "clubs"}], "Marcus": [{"rank": "7", "suit": "hearts"}, {"rank": "A", "suit": "spades"}, {"rank": "2", "suit": "hearts"}], "Sage": [{"rank": "K", "suit": "clubs"}, {"rank": "3", "suit": "spades"}]}


game_id: 2a80acd5-903a-43c8-a3c9-5f69b3e30119
timestamp: 2026-01-25 00:10:21.814115
player_id: cpu_3
player_name: Maya
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped 4 for 5 at pos 3
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}]

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


game_id: 2a80acd5-903a-43c8-a3c9-5f69b3e30119
timestamp: 2026-01-25 00:10:21.820378
player_id: cpu_0
player_name: Priya
action: take_discard
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "J", "suit": "hearts", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": false}]

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


game_id: 2a80acd5-903a-43c8-a3c9-5f69b3e30119
timestamp: 2026-01-25 00:10:21.826135
player_id: cpu_0
player_name: Priya
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: swapped 5 for J at pos 4
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}]

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


game_id: 2a80acd5-903a-43c8-a3c9-5f69b3e30119
timestamp: 2026-01-25 00:10:21.832174
player_id: cpu_1
player_name: Marcus
action: draw_deck
card_rank: 10
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Priya": [{"rank": "K", "suit": "hearts"}, {"rank": "5", "suit": "diamonds"}, {"rank": "6", "suit": "clubs"}, {"rank": "5", "suit": "hearts"}], "Sage": [{"rank": "K", "suit": "clubs"}, {"rank": "3", "suit": "spades"}], "Maya": [{"rank": "A", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}]}


game_id: 2a80acd5-903a-43c8-a3c9-5f69b3e30119
timestamp: 2026-01-25 00:10:21.844383
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}]

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


game_id: 2a80acd5-903a-43c8-a3c9-5f69b3e30119
timestamp: 2026-01-25 00:10:21.850742
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "3", "suit": "spades"}
decision_reason: swapped 2 for 3 at pos 3
hand_json:
[{"rank": "5", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}]

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


game_id: 2a80acd5-903a-43c8-a3c9-5f69b3e30119
timestamp: 2026-01-25 00:10:21.856816
player_id: cpu_3
player_name: Maya
action: take_discard
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}]

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


game_id: 2a80acd5-903a-43c8-a3c9-5f69b3e30119
timestamp: 2026-01-25 00:10:21.862772
player_id: cpu_3
player_name: Maya
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: swapped 3 for 4 at pos 3
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}]

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


game_id: 2a80acd5-903a-43c8-a3c9-5f69b3e30119
timestamp: 2026-01-25 00:10:21.868595
player_id: cpu_0
player_name: Priya
action: take_discard
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}]

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


game_id: 2a80acd5-903a-43c8-a3c9-5f69b3e30119
timestamp: 2026-01-25 00:10:21.874234
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 3
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}]

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


game_id: 2a80acd5-903a-43c8-a3c9-5f69b3e30119
timestamp: 2026-01-25 00:10:21.880300
player_id: cpu_1
player_name: Marcus
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: took 6 from discard
visible_opponents_json:
{"Priya": [{"rank": "K", "suit": "hearts"}, {"rank": "5", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}, {"rank": "5", "suit": "hearts"}], "Sage": [{"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}], "Maya": [{"rank": "A", "suit": "diamonds"}, {"rank": "3", "suit": "spades"}]}


game_id: 2a80acd5-903a-43c8-a3c9-5f69b3e30119
timestamp: 2026-01-25 00:10:21.886148
player_id: cpu_1
player_name: Marcus
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped 6 for 7 at pos 2
hand_json:
[{"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: 2a80acd5-903a-43c8-a3c9-5f69b3e30119
timestamp: 2026-01-25 00:10:21.892205
player_id: cpu_2
player_name: Sage
action: take_discard
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "5", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}]

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


game_id: 2a80acd5-903a-43c8-a3c9-5f69b3e30119
timestamp: 2026-01-25 00:10:21.898458
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: swapped 7 for 8 at pos 4
hand_json:
[{"rank": "5", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}]

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


game_id: 2a80acd5-903a-43c8-a3c9-5f69b3e30119
timestamp: 2026-01-25 00:10:21.904728
player_id: cpu_3
player_name: Maya
action: draw_deck
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": false}]

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


game_id: 2a80acd5-903a-43c8-a3c9-5f69b3e30119
timestamp: 2026-01-25 00:10:21.911018
player_id: cpu_3
player_name: Maya
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "A", "suit": "hearts"}
decision_reason: swapped 6 for A at pos 5
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}]

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


game_id: 2a80acd5-903a-43c8-a3c9-5f69b3e30119
timestamp: 2026-01-25 00:10:21.917272
player_id: cpu_0
player_name: Priya
action: take_discard
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: took A from discard
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}]

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


game_id: 2a80acd5-903a-43c8-a3c9-5f69b3e30119
timestamp: 2026-01-25 00:10:21.923455
player_id: cpu_0
player_name: Priya
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped A for 5 at pos 1
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}]

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


game_id: 2a80acd5-903a-43c8-a3c9-5f69b3e30119
timestamp: 2026-01-25 00:10:21.929587
player_id: cpu_1
player_name: Marcus
action: take_discard
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: 2a80acd5-903a-43c8-a3c9-5f69b3e30119
timestamp: 2026-01-25 00:10:21.935961
player_id: cpu_1
player_name: Marcus
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 5 for 6 at pos 2
hand_json:
[{"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: 2a80acd5-903a-43c8-a3c9-5f69b3e30119
timestamp: 2026-01-25 00:10:21.941981
player_id: cpu_2
player_name: Sage
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "5", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}]

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


game_id: 2a80acd5-903a-43c8-a3c9-5f69b3e30119
timestamp: 2026-01-25 00:10:21.948008
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped 6 for 7 at pos 4
hand_json:
[{"rank": "5", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}]

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


game_id: 2a80acd5-903a-43c8-a3c9-5f69b3e30119
timestamp: 2026-01-25 00:10:21.954227
player_id: cpu_3
player_name: Maya
action: take_discard
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": true}]

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


game_id: 2a80acd5-903a-43c8-a3c9-5f69b3e30119
timestamp: 2026-01-25 00:10:21.960084
player_id: cpu_3
player_name: Maya
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "2", "suit": "clubs"}
decision_reason: swapped 7 for 2 at pos 4
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}]

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


game_id: 2a80acd5-903a-43c8-a3c9-5f69b3e30119
timestamp: 2026-01-25 00:10:21.966006
player_id: cpu_0
player_name: Priya
action: take_discard
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: took 2 from discard
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}]

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


game_id: 2a80acd5-903a-43c8-a3c9-5f69b3e30119
timestamp: 2026-01-25 00:10:21.972253
player_id: cpu_0
player_name: Priya
action: swap
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "hearts"}
decision_reason: swapped 2 for 5 at pos 4
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}]

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


game_id: 2a80acd5-903a-43c8-a3c9-5f69b3e30119
timestamp: 2026-01-25 00:10:21.978595
player_id: cpu_1
player_name: Marcus
action: take_discard
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "diamonds"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: 2a80acd5-903a-43c8-a3c9-5f69b3e30119
timestamp: 2026-01-25 00:10:21.984985
player_id: cpu_1
player_name: Marcus
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: swapped 5 for Q at pos 4
hand_json:
[{"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: 2a80acd5-903a-43c8-a3c9-5f69b3e30119
timestamp: 2026-01-25 00:10:21.991138
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}]

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


game_id: 2a80acd5-903a-43c8-a3c9-5f69b3e30119
timestamp: 2026-01-25 00:10:21.997168
player_id: cpu_2
player_name: Sage
action: swap
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped A for 6 at pos 4
hand_json:
[{"rank": "5", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}]

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


game_id: 2a80acd5-903a-43c8-a3c9-5f69b3e30119
timestamp: 2026-01-25 00:10:22.003235
player_id: cpu_3
player_name: Maya
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": "4", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}]

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


game_id: 2a80acd5-903a-43c8-a3c9-5f69b3e30119
timestamp: 2026-01-25 00:10:22.009346
player_id: cpu_3
player_name: Maya
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: swapped 6 for 8 at pos 2
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}]

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


game_id: 2a80acd5-903a-43c8-a3c9-5f69b3e30119
timestamp: 2026-01-25 00:10:22.015190
player_id: cpu_0
player_name: Priya
action: draw_deck
card_rank: J
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}]

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


game_id: 2a80acd5-903a-43c8-a3c9-5f69b3e30119
timestamp: 2026-01-25 00:10:22.027984
player_id: cpu_1
player_name: Marcus
action: draw_deck
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: 2a80acd5-903a-43c8-a3c9-5f69b3e30119
timestamp: 2026-01-25 00:10:22.040153
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "5", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}]

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


game_id: 2a80acd5-903a-43c8-a3c9-5f69b3e30119
timestamp: 2026-01-25 00:10:22.046486
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "5", "suit": "spades"}
decision_reason: swapped 4 for 5 at pos 0
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}]

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


game_id: 2a80acd5-903a-43c8-a3c9-5f69b3e30119
timestamp: 2026-01-25 00:10:22.053232
player_id: cpu_3
player_name: Maya
action: take_discard
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}]

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


game_id: 2a80acd5-903a-43c8-a3c9-5f69b3e30119
timestamp: 2026-01-25 00:10:22.059536
player_id: cpu_3
player_name: Maya
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped 5 for 7 at pos 4
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}]

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


game_id: 2a80acd5-903a-43c8-a3c9-5f69b3e30119
timestamp: 2026-01-25 00:10:22.065544
player_id: cpu_0
player_name: Priya
action: take_discard
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: took 7 from discard
visible_opponents_json:
{"Marcus": [{"rank": "5", "suit": "diamonds"}, {"rank": "A", "suit": "spades"}, {"rank": "5", "suit": "hearts"}, {"rank": "2", "suit": "hearts"}], "Sage": [{"rank": "4", "suit": "spades"}, {"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}, {"rank": "A", "suit": "clubs"}], "Maya": [{"rank": "A", "suit": "diamonds"}, {"rank": "6", "suit": "clubs"}, {"rank": "3", "suit": "spades"}, {"rank": "5", "suit": "spades"}, {"rank": "6", "suit": "hearts"}]}


game_id: 2a80acd5-903a-43c8-a3c9-5f69b3e30119
timestamp: 2026-01-25 00:10:22.071406
player_id: cpu_0
player_name: Priya
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped 7 for 6 at pos 2
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}]

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


game_id: 2a80acd5-903a-43c8-a3c9-5f69b3e30119
timestamp: 2026-01-25 00:10:22.077498
player_id: cpu_1
player_name: Marcus
action: take_discard
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: took 6 from discard
visible_opponents_json:
{"Priya": [{"rank": "K", "suit": "hearts"}, {"rank": "A", "suit": "hearts"}, {"rank": "7", "suit": "hearts"}, {"rank": "4", "suit": "diamonds"}, {"rank": "2", "suit": "clubs"}], "Sage": [{"rank": "4", "suit": "spades"}, {"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}, {"rank": "A", "suit": "clubs"}], "Maya": [{"rank": "A", "suit": "diamonds"}, {"rank": "6", "suit": "clubs"}, {"rank": "3", "suit": "spades"}, {"rank": "5", "suit": "spades"}, {"rank": "6", "suit": "hearts"}]}


game_id: 2a80acd5-903a-43c8-a3c9-5f69b3e30119
timestamp: 2026-01-25 00:10:22.083696
player_id: cpu_1
player_name: Marcus
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: swapped 6 for 10 at pos 0
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: 2a80acd5-903a-43c8-a3c9-5f69b3e30119
timestamp: 2026-01-25 00:10:22.090087
player_id: cpu_2
player_name: Sage
action: draw_deck
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}]

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


game_id: 2a80acd5-903a-43c8-a3c9-5f69b3e30119
timestamp: 2026-01-25 00:10:22.096303
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "4", "suit": "spades"}
decision_reason: swapped 3 for 4 at pos 0
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}]

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


game_id: 2a80acd5-903a-43c8-a3c9-5f69b3e30119
timestamp: 2026-01-25 00:10:22.102508
player_id: cpu_3
player_name: Maya
action: take_discard
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}]

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


game_id: 2a80acd5-903a-43c8-a3c9-5f69b3e30119
timestamp: 2026-01-25 00:10:22.108530
player_id: cpu_3
player_name: Maya
action: swap
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 4 for 6 at pos 2
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}]

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


game_id: 2a80acd5-903a-43c8-a3c9-5f69b3e30119
timestamp: 2026-01-25 00:10:22.118092
player_id: cpu_0
player_name: Priya
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}]

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


game_id: 2a80acd5-903a-43c8-a3c9-5f69b3e30119
timestamp: 2026-01-25 00:10:22.124943
player_id: cpu_0
player_name: Priya
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped 6 for 7 at pos 2
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}]

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


game_id: 2a80acd5-903a-43c8-a3c9-5f69b3e30119
timestamp: 2026-01-25 00:10:22.131599
player_id: cpu_1
player_name: Marcus
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": "6", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: 2a80acd5-903a-43c8-a3c9-5f69b3e30119
timestamp: 2026-01-25 00:10:22.139122
player_id: cpu_1
player_name: Marcus
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "3", "suit": "clubs"}
decision_reason: swapped 7 for 3 at pos 1
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}]

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


game_id: 2a80acd5-903a-43c8-a3c9-5f69b3e30119
timestamp: 2026-01-25 00:10:22.145321
player_id: cpu_2
player_name: Sage
action: take_discard
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}]

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


game_id: 2a80acd5-903a-43c8-a3c9-5f69b3e30119
timestamp: 2026-01-25 00:10:22.151632
player_id: cpu_2
player_name: Sage
action: swap
card_rank: 3
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: swapped 3 for 9 at pos 5
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "clubs", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "clubs", "face_up": true}]

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


game_id: 2a80acd5-903a-43c8-a3c9-5f69b3e30119
timestamp: 2026-01-25 00:10:22.158196
player_id: cpu_3
player_name: Maya
action: draw_deck
card_rank: Q
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}]

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


game_id: 2a80acd5-903a-43c8-a3c9-5f69b3e30119
timestamp: 2026-01-25 00:10:22.170892
player_id: cpu_0
player_name: Priya
action: draw_deck
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}]

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


game_id: 2a80acd5-903a-43c8-a3c9-5f69b3e30119
timestamp: 2026-01-25 00:10:22.177072
player_id: cpu_0
player_name: Priya
action: swap
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 3 for 6 at pos 2
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}]

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


game_id: de976284-d5ac-461e-ab09-4bb62d01925d
timestamp: 2026-01-25 00:10:22.194908
player_id: cpu_0
player_name: Sage
action: draw_deck
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "J", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "9", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: de976284-d5ac-461e-ab09-4bb62d01925d
timestamp: 2026-01-25 00:10:22.200832
player_id: cpu_0
player_name: Sage
action: swap
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: swapped 4 for 9 at pos 0
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: de976284-d5ac-461e-ab09-4bb62d01925d
timestamp: 2026-01-25 00:10:22.210217
player_id: cpu_1
player_name: Sofia
action: draw_deck
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": true}]

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


game_id: de976284-d5ac-461e-ab09-4bb62d01925d
timestamp: 2026-01-25 00:10:22.216248
player_id: cpu_1
player_name: Sofia
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: swapped 4 for 10 at pos 5
hand_json:
[{"rank": "K", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}]

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


game_id: de976284-d5ac-461e-ab09-4bb62d01925d
timestamp: 2026-01-25 00:10:22.222149
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": true}]

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


game_id: de976284-d5ac-461e-ab09-4bb62d01925d
timestamp: 2026-01-25 00:10:22.228329
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 5
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: swapped 5 for Q at pos 5
hand_json:
[{"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: de976284-d5ac-461e-ab09-4bb62d01925d
timestamp: 2026-01-25 00:10:22.234431
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": false}]

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


game_id: de976284-d5ac-461e-ab09-4bb62d01925d
timestamp: 2026-01-25 00:10:22.240391
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: swapped 4 for 9 at pos 3
hand_json:
[{"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": false}]

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


game_id: de976284-d5ac-461e-ab09-4bb62d01925d
timestamp: 2026-01-25 00:10:22.246615
player_id: cpu_0
player_name: Sage
action: draw_deck
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: de976284-d5ac-461e-ab09-4bb62d01925d
timestamp: 2026-01-25 00:10:22.252373
player_id: cpu_0
player_name: Sage
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "3", "suit": "hearts"}
decision_reason: swapped 7 for 3 at pos 4
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: de976284-d5ac-461e-ab09-4bb62d01925d
timestamp: 2026-01-25 00:10:22.258169
player_id: cpu_1
player_name: Sofia
action: take_discard
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "K", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}]

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


game_id: de976284-d5ac-461e-ab09-4bb62d01925d
timestamp: 2026-01-25 00:10:22.263953
player_id: cpu_1
player_name: Sofia
action: swap
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped 3 for 6 at pos 1
hand_json:
[{"rank": "K", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}]

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


game_id: de976284-d5ac-461e-ab09-4bb62d01925d
timestamp: 2026-01-25 00:10:22.269861
player_id: cpu_2
player_name: Maya
action: take_discard
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: de976284-d5ac-461e-ab09-4bb62d01925d
timestamp: 2026-01-25 00:10:22.275966
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "2", "suit": "diamonds"}
decision_reason: swapped 6 for 2 at pos 4
hand_json:
[{"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: de976284-d5ac-461e-ab09-4bb62d01925d
timestamp: 2026-01-25 00:10:22.282093
player_id: cpu_3
player_name: Marcus
action: take_discard
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: took 2 from discard
hand_json:
[{"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": false}]

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


game_id: de976284-d5ac-461e-ab09-4bb62d01925d
timestamp: 2026-01-25 00:10:22.288133
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: swapped 2 for 4 at pos 3
hand_json:
[{"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": false}]

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


game_id: de976284-d5ac-461e-ab09-4bb62d01925d
timestamp: 2026-01-25 00:10:22.293858
player_id: cpu_0
player_name: Sage
action: take_discard
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: de976284-d5ac-461e-ab09-4bb62d01925d
timestamp: 2026-01-25 00:10:22.300233
player_id: cpu_0
player_name: Sage
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: swapped 4 for 9 at pos 3
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: de976284-d5ac-461e-ab09-4bb62d01925d
timestamp: 2026-01-25 00:10:22.306201
player_id: cpu_1
player_name: Sofia
action: draw_deck
card_rank: J
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "K", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "9", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": true}]

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


game_id: de976284-d5ac-461e-ab09-4bb62d01925d
timestamp: 2026-01-25 00:10:22.318013
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: J
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: de976284-d5ac-461e-ab09-4bb62d01925d
timestamp: 2026-01-25 00:10:22.330242
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: 10
card_suit: hearts
discard_top_json: {"rank": "J", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": false}]

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


game_id: de976284-d5ac-461e-ab09-4bb62d01925d
timestamp: 2026-01-25 00:10:22.360405
player_id: cpu_1
player_name: Sofia
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: swapped 5 for 9 at pos 4
hand_json:
[{"rank": "K", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}]


game_id: de976284-d5ac-461e-ab09-4bb62d01925d
timestamp: 2026-01-25 00:10:22.366647
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: Q
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Sage": [{"rank": "4", "suit": "spades"}, {"rank": "4", "suit": "clubs"}, {"rank": "7", "suit": "clubs"}, {"rank": "3", "suit": "spades"}], "Sofia": [{"rank": "3", "suit": "hearts"}, {"rank": "5", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}], "Marcus": [{"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}]}


game_id: de976284-d5ac-461e-ab09-4bb62d01925d
timestamp: 2026-01-25 00:10:22.378849
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: drew from deck
visible_opponents_json:
{"Sage": [{"rank": "4", "suit": "spades"}, {"rank": "4", "suit": "clubs"}, {"rank": "7", "suit": "clubs"}, {"rank": "3", "suit": "spades"}], "Sofia": [{"rank": "3", "suit": "hearts"}, {"rank": "5", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}], "Maya": [{"rank": "6", "suit": "clubs"}, {"rank": "6", "suit": "spades"}, {"rank": "5", "suit": "hearts"}]}


game_id: de976284-d5ac-461e-ab09-4bb62d01925d
timestamp: 2026-01-25 00:10:22.385361
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped A for 7 at pos 4
hand_json:
[{"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}]

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


game_id: de976284-d5ac-461e-ab09-4bb62d01925d
timestamp: 2026-01-25 00:10:22.391729
player_id: cpu_0
player_name: Sage
action: take_discard
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: took 7 from discard
visible_opponents_json:
{"Sofia": [{"rank": "3", "suit": "hearts"}, {"rank": "5", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}], "Maya": [{"rank": "6", "suit": "clubs"}, {"rank": "6", "suit": "spades"}, {"rank": "5", "suit": "hearts"}], "Marcus": [{"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}, {"rank": "A", "suit": "hearts"}]}


game_id: de976284-d5ac-461e-ab09-4bb62d01925d
timestamp: 2026-01-25 00:10:22.397940
player_id: cpu_0
player_name: Sage
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 7 for 7 at pos 1
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: de976284-d5ac-461e-ab09-4bb62d01925d
timestamp: 2026-01-25 00:10:22.403913
player_id: cpu_1
player_name: Sofia
action: take_discard
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "K", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}]

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


game_id: de976284-d5ac-461e-ab09-4bb62d01925d
timestamp: 2026-01-25 00:10:22.410146
player_id: cpu_1
player_name: Sofia
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "A", "suit": "diamonds"}
decision_reason: swapped 7 for A at pos 3
hand_json:
[{"rank": "K", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}]

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


game_id: de976284-d5ac-461e-ab09-4bb62d01925d
timestamp: 2026-01-25 00:10:22.416030
player_id: cpu_2
player_name: Maya
action: take_discard
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: took A from discard
visible_opponents_json:
{"Sage": [{"rank": "4", "suit": "spades"}, {"rank": "7", "suit": "hearts"}, {"rank": "4", "suit": "clubs"}, {"rank": "7", "suit": "clubs"}, {"rank": "3", "suit": "spades"}], "Sofia": [{"rank": "3", "suit": "hearts"}, {"rank": "7", "suit": "diamonds"}, {"rank": "5", "suit": "diamonds"}, {"rank": "4", "suit": "diamonds"}], "Marcus": [{"rank": "K", "suit": "clubs"}, {"rank": "2", "suit": "diamonds"}, {"rank": "A", "suit": "hearts"}]}


game_id: de976284-d5ac-461e-ab09-4bb62d01925d
timestamp: 2026-01-25 00:10:22.422117
player_id: cpu_2
player_name: Maya
action: swap
card_rank: A
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped A for 6 at pos 1
hand_json:
[{"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: de976284-d5ac-461e-ab09-4bb62d01925d
timestamp: 2026-01-25 00:10:22.428167
player_id: cpu_3
player_name: Marcus
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "diamonds"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}]

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


game_id: de976284-d5ac-461e-ab09-4bb62d01925d
timestamp: 2026-01-25 00:10:22.433963
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: swapped 6 for Q at pos 0
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}]

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


game_id: de976284-d5ac-461e-ab09-4bb62d01925d
timestamp: 2026-01-25 00:10:22.439785
player_id: cpu_0
player_name: Sage
action: draw_deck
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: de976284-d5ac-461e-ab09-4bb62d01925d
timestamp: 2026-01-25 00:10:22.445967
player_id: cpu_0
player_name: Sage
action: swap
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: swapped 2 for 7 at pos 1
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: de976284-d5ac-461e-ab09-4bb62d01925d
timestamp: 2026-01-25 00:10:22.452155
player_id: cpu_1
player_name: Sofia
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": "K", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}]

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


game_id: de976284-d5ac-461e-ab09-4bb62d01925d
timestamp: 2026-01-25 00:10:22.458363
player_id: cpu_1
player_name: Sofia
action: swap
card_rank: 7
card_suit: hearts
discard_top_json: {"rank": "K", "suit": "spades"}
decision_reason: swapped 7 for K at pos 0
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}]

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


game_id: de976284-d5ac-461e-ab09-4bb62d01925d
timestamp: 2026-01-25 00:10:22.463982
player_id: cpu_2
player_name: Maya
action: take_discard
card_rank: K
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took K from discard
hand_json:
[{"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: de976284-d5ac-461e-ab09-4bb62d01925d
timestamp: 2026-01-25 00:10:22.470122
player_id: cpu_2
player_name: Maya
action: swap
card_rank: K
card_suit: spades
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped K for 6 at pos 4
hand_json:
[{"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: de976284-d5ac-461e-ab09-4bb62d01925d
timestamp: 2026-01-25 00:10:22.476610
player_id: cpu_3
player_name: Marcus
action: take_discard
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "spades"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "8", "suit": "clubs", "face_up": false}]

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


game_id: de976284-d5ac-461e-ab09-4bb62d01925d
timestamp: 2026-01-25 00:10:22.482827
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 5
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}]

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


game_id: de976284-d5ac-461e-ab09-4bb62d01925d
timestamp: 2026-01-25 00:10:22.488538
player_id: cpu_0
player_name: Sage
action: draw_deck
card_rank: A
card_suit: spades
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: de976284-d5ac-461e-ab09-4bb62d01925d
timestamp: 2026-01-25 00:10:22.494693
player_id: cpu_0
player_name: Sage
action: swap
card_rank: A
card_suit: spades
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped A for 7 at pos 4
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: de976284-d5ac-461e-ab09-4bb62d01925d
timestamp: 2026-01-25 00:10:22.500550
player_id: cpu_1
player_name: Sofia
action: take_discard
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}]

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


game_id: de976284-d5ac-461e-ab09-4bb62d01925d
timestamp: 2026-01-25 00:10:22.506862
player_id: cpu_1
player_name: Sofia
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped 7 for 7 at pos 2
hand_json:
[{"rank": "7", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}]

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


game_id: de976284-d5ac-461e-ab09-4bb62d01925d
timestamp: 2026-01-25 00:10:22.512795
player_id: cpu_2
player_name: Maya
action: take_discard
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: de976284-d5ac-461e-ab09-4bb62d01925d
timestamp: 2026-01-25 00:10:22.518622
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: swapped 7 for 10 at pos 2
hand_json:
[{"rank": "Q", "suit": "clubs", "face_up": false}, {"rank": "A", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}, {"rank": "5", "suit": "hearts", "face_up": true}]

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


game_id: de976284-d5ac-461e-ab09-4bb62d01925d
timestamp: 2026-01-25 00:10:22.524719
player_id: cpu_3
player_name: Marcus
action: draw_deck
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}]

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


game_id: de976284-d5ac-461e-ab09-4bb62d01925d
timestamp: 2026-01-25 00:10:22.530682
player_id: cpu_3
player_name: Marcus
action: swap
card_rank: K
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped K for 6 at pos 0
hand_json:
[{"rank": "K", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}]

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


game_id: de976284-d5ac-461e-ab09-4bb62d01925d
timestamp: 2026-01-25 00:10:22.536680
player_id: cpu_0
player_name: Sage
action: take_discard
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: de976284-d5ac-461e-ab09-4bb62d01925d
timestamp: 2026-01-25 00:10:22.542682
player_id: cpu_0
player_name: Sage
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "spades"}
decision_reason: swapped 6 for 10 at pos 2
hand_json:
[{"rank": "4", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "A", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": true}]

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


game_id: 9a34fa63-606b-4afe-8a53-8bcfe85ca80a
timestamp: 2026-01-25 00:10:22.560381
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: 9a34fa63-606b-4afe-8a53-8bcfe85ca80a
timestamp: 2026-01-25 00:10:22.566718
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: 3
card_suit: hearts
discard_top_json: {"rank": "4", "suit": "diamonds"}
decision_reason: swapped 3 for 4 at pos 4
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: 9a34fa63-606b-4afe-8a53-8bcfe85ca80a
timestamp: 2026-01-25 00:10:22.572778
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "hearts"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "J", "suit": "hearts", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}]

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


game_id: 9a34fa63-606b-4afe-8a53-8bcfe85ca80a
timestamp: 2026-01-25 00:10:22.578902
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 4
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: swapped 4 for J at pos 0
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}]

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


game_id: 9a34fa63-606b-4afe-8a53-8bcfe85ca80a
timestamp: 2026-01-25 00:10:22.584972
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: 9a34fa63-606b-4afe-8a53-8bcfe85ca80a
timestamp: 2026-01-25 00:10:22.590820
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: swapped 7 for Q at pos 1
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: 9a34fa63-606b-4afe-8a53-8bcfe85ca80a
timestamp: 2026-01-25 00:10:22.596742
player_id: cpu_3
player_name: River
action: draw_deck
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "7", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}]

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


game_id: 9a34fa63-606b-4afe-8a53-8bcfe85ca80a
timestamp: 2026-01-25 00:10:22.605357
player_id: cpu_3
player_name: River
action: swap
card_rank: 6
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: swapped 6 for 10 at pos 2
hand_json:
[{"rank": "7", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}]

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


game_id: 9a34fa63-606b-4afe-8a53-8bcfe85ca80a
timestamp: 2026-01-25 00:10:22.611033
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: 9
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: 9a34fa63-606b-4afe-8a53-8bcfe85ca80a
timestamp: 2026-01-25 00:10:22.622858
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}]

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


game_id: 9a34fa63-606b-4afe-8a53-8bcfe85ca80a
timestamp: 2026-01-25 00:10:22.628618
player_id: cpu_1
player_name: Sage
action: swap
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped A for 6 at pos 4
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}]

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


game_id: 9a34fa63-606b-4afe-8a53-8bcfe85ca80a
timestamp: 2026-01-25 00:10:22.634759
player_id: cpu_2
player_name: Maya
action: take_discard
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: 9a34fa63-606b-4afe-8a53-8bcfe85ca80a
timestamp: 2026-01-25 00:10:22.641127
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 6 for 7 at pos 1
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: 9a34fa63-606b-4afe-8a53-8bcfe85ca80a
timestamp: 2026-01-25 00:10:22.646874
player_id: cpu_3
player_name: River
action: take_discard
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "hearts"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "7", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}]

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


game_id: 9a34fa63-606b-4afe-8a53-8bcfe85ca80a
timestamp: 2026-01-25 00:10:22.652394
player_id: cpu_3
player_name: River
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: swapped 7 for 7 at pos 0
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}]

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


game_id: 9a34fa63-606b-4afe-8a53-8bcfe85ca80a
timestamp: 2026-01-25 00:10:22.659220
player_id: cpu_0
player_name: Sofia
action: draw_deck
card_rank: J
card_suit: clubs
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: drew from deck
visible_opponents_json:
{"Sage": [{"rank": "4", "suit": "diamonds"}, {"rank": "A", "suit": "clubs"}], "Maya": [{"rank": "6", "suit": "spades"}, {"rank": "K", "suit": "spades"}], "River": [{"rank": "7", "suit": "diamonds"}, {"rank": "6", "suit": "clubs"}, {"rank": "7", "suit": "clubs"}]}


game_id: 9a34fa63-606b-4afe-8a53-8bcfe85ca80a
timestamp: 2026-01-25 00:10:22.670793
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: 8
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}]

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


game_id: 9a34fa63-606b-4afe-8a53-8bcfe85ca80a
timestamp: 2026-01-25 00:10:22.682570
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: 9a34fa63-606b-4afe-8a53-8bcfe85ca80a
timestamp: 2026-01-25 00:10:22.688526
player_id: cpu_2
player_name: Maya
action: swap
card_rank: A
card_suit: hearts
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped A for 6 at pos 1
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: 9a34fa63-606b-4afe-8a53-8bcfe85ca80a
timestamp: 2026-01-25 00:10:22.694529
player_id: cpu_3
player_name: River
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": "7", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": false}]

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


game_id: 9a34fa63-606b-4afe-8a53-8bcfe85ca80a
timestamp: 2026-01-25 00:10:22.700661
player_id: cpu_3
player_name: River
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "4", "suit": "clubs"}
decision_reason: swapped 6 for 4 at pos 5
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}]

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


game_id: 9a34fa63-606b-4afe-8a53-8bcfe85ca80a
timestamp: 2026-01-25 00:10:22.706259
player_id: cpu_0
player_name: Sofia
action: take_discard
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: took 4 from discard
visible_opponents_json:
{"Sage": [{"rank": "4", "suit": "diamonds"}, {"rank": "A", "suit": "clubs"}], "Maya": [{"rank": "A", "suit": "hearts"}, {"rank": "K", "suit": "spades"}], "River": [{"rank": "7", "suit": "diamonds"}, {"rank": "6", "suit": "clubs"}, {"rank": "7", "suit": "clubs"}, {"rank": "6", "suit": "spades"}]}


game_id: 9a34fa63-606b-4afe-8a53-8bcfe85ca80a
timestamp: 2026-01-25 00:10:22.711798
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: 4
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: swapped 4 for Q at pos 2
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: 9a34fa63-606b-4afe-8a53-8bcfe85ca80a
timestamp: 2026-01-25 00:10:22.717759
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
visible_opponents_json:
{"Sofia": [{"rank": "2", "suit": "hearts"}, {"rank": "4", "suit": "clubs"}, {"rank": "3", "suit": "hearts"}, {"rank": "4", "suit": "hearts"}], "Maya": [{"rank": "A", "suit": "hearts"}, {"rank": "K", "suit": "spades"}], "River": [{"rank": "7", "suit": "diamonds"}, {"rank": "6", "suit": "clubs"}, {"rank": "7", "suit": "clubs"}, {"rank": "6", "suit": "spades"}]}


game_id: 9a34fa63-606b-4afe-8a53-8bcfe85ca80a
timestamp: 2026-01-25 00:10:22.723746
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "5", "suit": "diamonds"}
decision_reason: swapped 5 for 5 at pos 2
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}]

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


game_id: 9a34fa63-606b-4afe-8a53-8bcfe85ca80a
timestamp: 2026-01-25 00:10:22.729373
player_id: cpu_2
player_name: Maya
action: take_discard
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "3", "suit": "spades", "face_up": false}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: 9a34fa63-606b-4afe-8a53-8bcfe85ca80a
timestamp: 2026-01-25 00:10:22.734995
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 5
card_suit: diamonds
discard_top_json: {"rank": "3", "suit": "spades"}
decision_reason: swapped 5 for 3 at pos 2
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: 9a34fa63-606b-4afe-8a53-8bcfe85ca80a
timestamp: 2026-01-25 00:10:22.740777
player_id: cpu_3
player_name: River
action: take_discard
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}]

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


game_id: 9a34fa63-606b-4afe-8a53-8bcfe85ca80a
timestamp: 2026-01-25 00:10:22.746809
player_id: cpu_3
player_name: River
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "7", "suit": "diamonds"}
decision_reason: swapped 3 for 7 at pos 0
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}]

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


game_id: 9a34fa63-606b-4afe-8a53-8bcfe85ca80a
timestamp: 2026-01-25 00:10:22.753111
player_id: cpu_0
player_name: Sofia
action: take_discard
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: 9a34fa63-606b-4afe-8a53-8bcfe85ca80a
timestamp: 2026-01-25 00:10:22.759297
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "K", "suit": "diamonds"}
decision_reason: swapped 7 for K at pos 3
hand_json:
[{"rank": "2", "suit": "hearts", "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": "3", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: 9a34fa63-606b-4afe-8a53-8bcfe85ca80a
timestamp: 2026-01-25 00:10:22.765281
player_id: cpu_1
player_name: Sage
action: take_discard
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: took K from discard
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}]

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


game_id: 9a34fa63-606b-4afe-8a53-8bcfe85ca80a
timestamp: 2026-01-25 00:10:22.771353
player_id: cpu_1
player_name: Sage
action: swap
card_rank: K
card_suit: diamonds
discard_top_json: {"rank": "5", "suit": "clubs"}
decision_reason: swapped K for 5 at pos 2
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}]

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


game_id: 9a34fa63-606b-4afe-8a53-8bcfe85ca80a
timestamp: 2026-01-25 00:10:22.777362
player_id: cpu_2
player_name: Maya
action: take_discard
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: took 5 from discard
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: 9a34fa63-606b-4afe-8a53-8bcfe85ca80a
timestamp: 2026-01-25 00:10:22.783614
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "4", "suit": "spades"}
decision_reason: swapped 5 for 4 at pos 4
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: 9a34fa63-606b-4afe-8a53-8bcfe85ca80a
timestamp: 2026-01-25 00:10:22.789775
player_id: cpu_3
player_name: River
action: take_discard
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: took 4 from discard
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}]

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


game_id: 9a34fa63-606b-4afe-8a53-8bcfe85ca80a
timestamp: 2026-01-25 00:10:22.795609
player_id: cpu_3
player_name: River
action: swap
card_rank: 4
card_suit: spades
discard_top_json: {"rank": "7", "suit": "clubs"}
decision_reason: swapped 4 for 7 at pos 3
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}]

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


game_id: 9a34fa63-606b-4afe-8a53-8bcfe85ca80a
timestamp: 2026-01-25 00:10:22.801391
player_id: cpu_0
player_name: Sofia
action: take_discard
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: took 7 from discard
hand_json:
[{"rank": "2", "suit": "hearts", "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": "3", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: 9a34fa63-606b-4afe-8a53-8bcfe85ca80a
timestamp: 2026-01-25 00:10:22.806992
player_id: cpu_0
player_name: Sofia
action: swap
card_rank: 7
card_suit: clubs
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: swapped 7 for 9 at pos 1
hand_json:
[{"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "7", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": true}, {"rank": "4", "suit": "hearts", "face_up": true}]

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


game_id: 9a34fa63-606b-4afe-8a53-8bcfe85ca80a
timestamp: 2026-01-25 00:10:22.812849
player_id: cpu_1
player_name: Sage
action: draw_deck
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}]

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


game_id: 9a34fa63-606b-4afe-8a53-8bcfe85ca80a
timestamp: 2026-01-25 00:10:22.819017
player_id: cpu_1
player_name: Sage
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "3", "suit": "diamonds"}
decision_reason: swapped 5 for 3 at pos 3
hand_json:
[{"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "Q", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": true}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}]

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


game_id: 9a34fa63-606b-4afe-8a53-8bcfe85ca80a
timestamp: 2026-01-25 00:10:22.824542
player_id: cpu_2
player_name: Maya
action: take_discard
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "2", "suit": "diamonds", "face_up": false}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: 9a34fa63-606b-4afe-8a53-8bcfe85ca80a
timestamp: 2026-01-25 00:10:22.830288
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "2", "suit": "diamonds"}
decision_reason: swapped 3 for 2 at pos 0
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "5", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: 9a34fa63-606b-4afe-8a53-8bcfe85ca80a
timestamp: 2026-01-25 00:10:22.836236
player_id: cpu_3
player_name: River
action: take_discard
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "9", "suit": "clubs"}
decision_reason: took 2 from discard
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}]

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


game_id: 9a34fa63-606b-4afe-8a53-8bcfe85ca80a
timestamp: 2026-01-25 00:10:22.842281
player_id: cpu_3
player_name: River
action: swap
card_rank: 2
card_suit: diamonds
discard_top_json: {"rank": "6", "suit": "clubs"}
decision_reason: swapped 2 for 6 at pos 2
hand_json:
[{"rank": "3", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "diamonds", "face_up": true}, {"rank": "2", "suit": "diamonds", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}, {"rank": "8", "suit": "diamonds", "face_up": true}, {"rank": "6", "suit": "spades", "face_up": true}]

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


game_id: 86bf795c-82f1-4daa-8405-e4cecd0f29f4
timestamp: 2026-01-25 00:10:22.860084
player_id: cpu_0
player_name: Diego
action: take_discard
card_rank: 2
card_suit: hearts
decision_reason: took 2 from discard
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "Q", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}]

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


game_id: 86bf795c-82f1-4daa-8405-e4cecd0f29f4
timestamp: 2026-01-25 00:10:22.866297
player_id: cpu_0
player_name: Diego
action: swap
card_rank: 2
card_suit: hearts
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: swapped 2 for Q at pos 4
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}]

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


game_id: 86bf795c-82f1-4daa-8405-e4cecd0f29f4
timestamp: 2026-01-25 00:10:22.872449
player_id: cpu_1
player_name: Marcus
action: draw_deck
card_rank: 7
card_suit: spades
discard_top_json: {"rank": "Q", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}]

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


game_id: 86bf795c-82f1-4daa-8405-e4cecd0f29f4
timestamp: 2026-01-25 00:10:22.883939
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "8", "suit": "hearts", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 86bf795c-82f1-4daa-8405-e4cecd0f29f4
timestamp: 2026-01-25 00:10:22.889891
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 3
card_suit: diamonds
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: swapped 3 for 8 at pos 0
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 86bf795c-82f1-4daa-8405-e4cecd0f29f4
timestamp: 2026-01-25 00:10:22.895767
player_id: cpu_3
player_name: River
action: take_discard
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: took 8 from discard
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": false}]

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


game_id: 86bf795c-82f1-4daa-8405-e4cecd0f29f4
timestamp: 2026-01-25 00:10:22.901255
player_id: cpu_3
player_name: River
action: swap
card_rank: 8
card_suit: hearts
discard_top_json: {"rank": "3", "suit": "spades"}
decision_reason: swapped 8 for 3 at pos 5
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}]

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


game_id: 86bf795c-82f1-4daa-8405-e4cecd0f29f4
timestamp: 2026-01-25 00:10:22.907040
player_id: cpu_0
player_name: Diego
action: take_discard
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "7", "suit": "spades"}
decision_reason: took 3 from discard
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "8", "suit": "spades", "face_up": false}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}]

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


game_id: 86bf795c-82f1-4daa-8405-e4cecd0f29f4
timestamp: 2026-01-25 00:10:22.913284
player_id: cpu_0
player_name: Diego
action: swap
card_rank: 3
card_suit: spades
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: swapped 3 for 8 at pos 2
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}]

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


game_id: 86bf795c-82f1-4daa-8405-e4cecd0f29f4
timestamp: 2026-01-25 00:10:22.919176
player_id: cpu_1
player_name: Marcus
action: draw_deck
card_rank: 10
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "spades"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}]

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


game_id: 86bf795c-82f1-4daa-8405-e4cecd0f29f4
timestamp: 2026-01-25 00:10:22.931787
player_id: cpu_2
player_name: Maya
action: draw_deck
card_rank: 10
card_suit: hearts
discard_top_json: {"rank": "10", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "10", "suit": "diamonds", "face_up": false}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 86bf795c-82f1-4daa-8405-e4cecd0f29f4
timestamp: 2026-01-25 00:10:22.944731
player_id: cpu_3
player_name: River
action: draw_deck
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "10", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "8", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}]

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


game_id: 86bf795c-82f1-4daa-8405-e4cecd0f29f4
timestamp: 2026-01-25 00:10:22.950838
player_id: cpu_3
player_name: River
action: swap
card_rank: 5
card_suit: spades
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: swapped 5 for 8 at pos 2
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}]

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


game_id: 86bf795c-82f1-4daa-8405-e4cecd0f29f4
timestamp: 2026-01-25 00:10:22.956943
player_id: cpu_0
player_name: Diego
action: draw_deck
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "spades", "face_up": false}]

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


game_id: 86bf795c-82f1-4daa-8405-e4cecd0f29f4
timestamp: 2026-01-25 00:10:22.962604
player_id: cpu_0
player_name: Diego
action: swap
card_rank: 6
card_suit: hearts
discard_top_json: {"rank": "K", "suit": "spades"}
decision_reason: swapped 6 for K at pos 5
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}]

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


game_id: 86bf795c-82f1-4daa-8405-e4cecd0f29f4
timestamp: 2026-01-25 00:10:22.968601
player_id: cpu_1
player_name: Marcus
action: take_discard
card_rank: K
card_suit: spades
discard_top_json: {"rank": "8", "suit": "clubs"}
decision_reason: took K from discard
visible_opponents_json:
{"Diego": [{"rank": "A", "suit": "hearts"}, {"rank": "3", "suit": "spades"}, {"rank": "2", "suit": "hearts"}, {"rank": "6", "suit": "hearts"}], "Maya": [{"rank": "3", "suit": "diamonds"}, {"rank": "4", "suit": "spades"}], "River": [{"rank": "5", "suit": "spades"}, {"rank": "4", "suit": "diamonds"}, {"rank": "8", "suit": "hearts"}]}


game_id: 86bf795c-82f1-4daa-8405-e4cecd0f29f4
timestamp: 2026-01-25 00:10:22.974832
player_id: cpu_1
player_name: Marcus
action: swap
card_rank: K
card_suit: spades
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped K for 6 at pos 5
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: 86bf795c-82f1-4daa-8405-e4cecd0f29f4
timestamp: 2026-01-25 00:10:22.981015
player_id: cpu_2
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
visible_opponents_json:
{"Diego": [{"rank": "A", "suit": "hearts"}, {"rank": "3", "suit": "spades"}, {"rank": "2", "suit": "hearts"}, {"rank": "6", "suit": "hearts"}], "Marcus": [{"rank": "4", "suit": "clubs"}, {"rank": "K", "suit": "spades"}], "River": [{"rank": "5", "suit": "spades"}, {"rank": "4", "suit": "diamonds"}, {"rank": "8", "suit": "hearts"}]}


game_id: 86bf795c-82f1-4daa-8405-e4cecd0f29f4
timestamp: 2026-01-25 00:10:22.989568
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: swapped 6 for 10 at pos 4
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 86bf795c-82f1-4daa-8405-e4cecd0f29f4
timestamp: 2026-01-25 00:10:22.995900
player_id: cpu_3
player_name: River
action: draw_deck
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "10", "suit": "diamonds"}
decision_reason: drew from deck
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "8", "suit": "hearts", "face_up": true}]

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


game_id: 86bf795c-82f1-4daa-8405-e4cecd0f29f4
timestamp: 2026-01-25 00:10:23.002274
player_id: cpu_3
player_name: River
action: swap
card_rank: 5
card_suit: clubs
discard_top_json: {"rank": "8", "suit": "hearts"}
decision_reason: swapped 5 for 8 at pos 5
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: 86bf795c-82f1-4daa-8405-e4cecd0f29f4
timestamp: 2026-01-25 00:10:23.009034
player_id: cpu_0
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": "K", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "K", "suit": "diamonds", "face_up": false}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}]

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


game_id: 86bf795c-82f1-4daa-8405-e4cecd0f29f4
timestamp: 2026-01-25 00:10:23.021704
player_id: cpu_1
player_name: Marcus
action: draw_deck
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: drew from deck
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: 86bf795c-82f1-4daa-8405-e4cecd0f29f4
timestamp: 2026-01-25 00:10:23.027933
player_id: cpu_1
player_name: Marcus
action: swap
card_rank: 7
card_suit: diamonds
discard_top_json: {"rank": "2", "suit": "clubs"}
decision_reason: swapped 7 for 2 at pos 1
hand_json:
[{"rank": "4", "suit": "clubs", "face_up": true}, {"rank": "7", "suit": "diamonds", "face_up": true}, {"rank": "3", "suit": "hearts", "face_up": false}, {"rank": "2", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "diamonds", "face_up": false}, {"rank": "K", "suit": "spades", "face_up": true}]

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


game_id: 86bf795c-82f1-4daa-8405-e4cecd0f29f4
timestamp: 2026-01-25 00:10:23.034145
player_id: cpu_2
player_name: Maya
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": "3", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "6", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 86bf795c-82f1-4daa-8405-e4cecd0f29f4
timestamp: 2026-01-25 00:10:23.040463
player_id: cpu_2
player_name: Maya
action: swap
card_rank: 2
card_suit: clubs
discard_top_json: {"rank": "6", "suit": "spades"}
decision_reason: swapped 2 for 6 at pos 4
hand_json:
[{"rank": "3", "suit": "diamonds", "face_up": true}, {"rank": "J", "suit": "spades", "face_up": false}, {"rank": "Q", "suit": "spades", "face_up": false}, {"rank": "9", "suit": "clubs", "face_up": false}, {"rank": "2", "suit": "clubs", "face_up": true}, {"rank": "4", "suit": "spades", "face_up": true}]

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


game_id: 86bf795c-82f1-4daa-8405-e4cecd0f29f4
timestamp: 2026-01-25 00:10:23.047313
player_id: cpu_3
player_name: River
action: take_discard
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: took 6 from discard
hand_json:
[{"rank": "A", "suit": "clubs", "face_up": false}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: 86bf795c-82f1-4daa-8405-e4cecd0f29f4
timestamp: 2026-01-25 00:10:23.053414
player_id: cpu_3
player_name: River
action: swap
card_rank: 6
card_suit: spades
discard_top_json: {"rank": "A", "suit": "clubs"}
decision_reason: swapped 6 for A at pos 0
hand_json:
[{"rank": "6", "suit": "spades", "face_up": true}, {"rank": "9", "suit": "hearts", "face_up": false}, {"rank": "5", "suit": "spades", "face_up": true}, {"rank": "4", "suit": "diamonds", "face_up": true}, {"rank": "10", "suit": "spades", "face_up": false}, {"rank": "5", "suit": "clubs", "face_up": true}]

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


game_id: 86bf795c-82f1-4daa-8405-e4cecd0f29f4
timestamp: 2026-01-25 00:10:23.059779
player_id: cpu_0
player_name: Diego
action: take_discard
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "J", "suit": "hearts"}
decision_reason: took A from discard
visible_opponents_json:
{"Marcus": [{"rank": "4", "suit": "clubs"}, {"rank": "7", "suit": "diamonds"}, {"rank": "K", "suit": "spades"}], "Maya": [{"rank": "3", "suit": "diamonds"}, {"rank": "2", "suit": "clubs"}, {"rank": "4", "suit": "spades"}], "River": [{"rank": "6", "suit": "spades"}, {"rank": "5", "suit": "spades"}, {"rank": "4", "suit": "diamonds"}, {"rank": "5", "suit": "clubs"}]}


game_id: 86bf795c-82f1-4daa-8405-e4cecd0f29f4
timestamp: 2026-01-25 00:10:23.066023
player_id: cpu_0
player_name: Diego
action: swap
card_rank: A
card_suit: clubs
discard_top_json: {"rank": "K", "suit": "diamonds"}
decision_reason: swapped A for K at pos 3
hand_json:
[{"rank": "A", "suit": "hearts", "face_up": true}, {"rank": "K", "suit": "clubs", "face_up": false}, {"rank": "3", "suit": "spades", "face_up": true}, {"rank": "A", "suit": "clubs", "face_up": true}, {"rank": "2", "suit": "hearts", "face_up": true}, {"rank": "6", "suit": "hearts", "face_up": true}]

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


