Parent: #1057
Epic: #1052
Goal
Run one complete self-play episode using the same fixed, low-randomness deck for both players.
Scope
- Configure the agreed MVP deck fixture for both seats
- Use the fixed non-learned mulligan policy
- Invoke PUCT/ISMCTS for MAIN_ACTION decisions
- Record one pending sample per decision and attach the final outcome
- Stop cleanly on win, loss, draw, or configured safety limit
Non-goals
- Arbitrary deck matchmaking
- Learned mulligan policy
- Parallel episode workers
Acceptance criteria
- An episode reaches a valid terminal result without illegal actions.
- Both seats use the same configured deck fixture.
- Each decision produces one valid training sample.
- Fixed game and search seeds reproduce the episode.
Verification
Add one deterministic C++ episode smoke test with the uniform evaluator.
Parent: #1057
Epic: #1052
Goal
Run one complete self-play episode using the same fixed, low-randomness deck for both players.
Scope
Non-goals
Acceptance criteria
Verification
Add one deterministic C++ episode smoke test with the uniform evaluator.